我有一个本机应用程序,它与我的笔记本电脑上运行的节点服务器(http://192.168.x.x:3000)对话。即使在成功登录后,对我的服务器的后续调用也会失败,并显示401状态。我发现服务器上没有传递cookie。
一些观察结果:
1)当我将代码部署到实际服务器并在进行API调用时使用适当的域(http://example.com)时,我的React Native应用程序运行正常。
2)使用邮递员,我能够对自己进行身份验证,并对我的本地服务器进行成功的API调用。
这是一个非常奇怪的问题,我相信我错过了一些小事,但现在已经坚持了很长时间。
关于可以做什么的任何提示/建议?
谢谢,
答案 0 :(得分:0)
我知道这有点老了,但是如果有人仍然遇到问题,我发现以下步骤可以为我解决
domain
(在我的情况下,是我的VM的IP地址和端口),并将credentials
设置为true maxAge
属性-我认为默认值大约是10秒,因此看起来好像我的会话并没有持续,而实际上它的过期时间太快了。第2步和第3步的示例可能类似于:
const express = require('express');
const path = require('path');
const session = require('express-session');
const cors = require('cors')
const app = express();
// STEP 2
app.use(cors({
credentials: true,
origin: '192.168.0.100:3000',
methods:['GET', 'POST', 'PUT', 'DELETE']
}));
// STEP 3
app.use(session({
cookie: {
maxAge: 86400000 // one day
}
}));
编辑: 还值得一提的是,如果您正在虚拟机(如我)上运行服务器,请确保虚拟机的日期与运行React应用程序的设备的日期一致。我发现这也很难体现为Axios似乎丢失会话。