【发布时间】:2022-01-06 16:15:32
【问题描述】:
我正在开发一个带有 nodejs/express 后端的 reactjs 前端应用程序。
之前,反应方面,我通过地址localhost:5000 访问我的nodejs,但由于我想从我的移动设备上尝试它,我天真地将localhost 更改为我的@ip 192.168.X.X,正如标题所说,它不起作用。
我正在分享一个我尝试使用 login 功能的示例,因为服务器应该发回一个 cookie。
前端我用axios:
const result = await axios({
method:'post',
url:'http://192.168.X.X:5000/api/user/login',
data:{
"emailLogin":login,
"password":password
},
withCredentials:true,
headers: { crossDomain: true, 'Content-Type': 'application/json' },
});
后端我试过这个:
const corsConfig = {
credentials:true,
origin:true,
}
app.use(cors(corsConfig));
第一个配置给我发回一个 200 个 http 代码,但没有任何 cookie。
我也试过这个作为后端:
const corsConfig = {
credentials:true,
origin:"*",
}
app.use(cors(corsConfig));
这一次,在前端,我得到了众所周知的 Access to XMLHttpRequest 错误。
我在 stackoverflow 的某处读到,当 origin 设置为 '*' credential 应该设置为 false 。
我也很想拥有一份关于 cors、react 和 nodejs 的完整文档,但老实说,我找不到任何可以解决我的问题的文档。
总结一下我的问题:
我的 reactjs 前端将部署在多个地址未知的设备上,它应该向 nodejs 后端发送一个 POST 请求,该后端将发回一个 cookie。
【问题讨论】:
-
抱歉,在意识到我错过了您问题的中间部分后,我删除了我的答案,而且您已经尝试了我所建议的内容。这可能是您正在寻找的文档npmjs.com/package/cors?
-
我建议您尝试一次,将您当前的客户端地址硬编码到服务器 cors 代码中,如此处 stackoverflow.com/questions/19743396/… 建议的那样,在您知道可行之后,弄清楚下一步该做什么
-
我可以知道您的前端和后端域/IP。使用 cookie 启用 CORS 取决于这两个。如果前端和后端都在不同的域(如 client.com 和 server.com)上,则应更改 sameSite='None' 的 cookie 属性,并为您的网站使用 HTTPS。
-
实际上,我认为我通过这个问题过度复杂了我的问题。我的服务器基于 nodejs,我的客户端应用程序是 reactjs 应用程序。假设我的服务器将托管在 myserver.com 上,而我的客户端将托管在 myclient.com 上。用户通过 myclient.com 访问我的应用程序,并通过它与 myserver.com 通信。也许我误解了 CORS 地址配置,CORS 服务器端是否应该允许来自 myclient.com 或实际用户地址的数据?对于上面的第一个示例,我可以访问我的服务器,但无法获取任何 cookie,而第二个示例,我无法访问服务器。
标签: node.js reactjs cookies cors