node.js - 无法使用 axios 和 Express Session 获取会话 cookie。但能够与邮递员
问题描述
我已经能够找到无数关于此的讨论主题,但似乎没有一个解决方案对我有用
本质上,我有一个反应客户端,它使用 axios 向使用快速会话的节点 js 后端发出请求
我能够登录应用程序并获得成功的响应。但是,响应标头不包含 connect.sid 字段。在检查 chromes devtools -> application -> cookies 文件夹时,我没有看到该站点的任何 cookie
我还尝试使用 IE 和 Firefox 进行测试,结果相同
现在,当通过邮递员发出相同的登录请求时,我可以看到标头中的 connect.sid 和 cookie 选项卡中的 cookie 本身。
在我目前的情况下,客户端和服务器都运行在 localhost 上,客户端运行在 3000 端口,服务器运行在 3001 端口。一个区别是客户端是 http,服务器是 https
根据我的在线研究,这些是建议的常见事情,在我的情况下都不起作用
- 在反应中将 axios withCredential 设置为“true”。这似乎已经解决了大多数在线用户的问题。我的也设置好了
import axios from "axios";
axios.defaults.withCredentials = true;
- 将服务器中会话 cookie 的 httpOnly 字段设置为 false。下面是我的会话配置
app.use(session({
secret: 'BSL3562904BVAIHBP53VRFSF',
resave: false,
saveUninitialized: false,
rolling: true,
cookie: {secure: true, httpOnly: false }
}))
- 在服务器中配置 cors 设置。在这种情况下,这不应该影响我,因为客户端和服务器在同一个域上运行,但我仍然覆盖了这个基础
app.use(cors({
credentials: true,
origin: "http://localhost:3000"
}));
对于原始值,我尝试了“localhost”和“127.0.0.1”</p>
- 在服务器中设置“信任代理”
app.set('trust proxy', 1);// trust first proxy
这不仅仅是无法在客户端检索 cookie 的问题,因为我可以创建 cookie 并将其附加到响应并查看它们。只是没有出现的会话cookie
在这一点上,我有点头撞墙。因此,任何帮助或建议将不胜感激!
解决方案
推荐阅读
- css - 仅使用 CSS 获得 6 位十六进制颜色的阴影?
- python - 异步执行器在运行后不会终止进程
- javascript - 到达断点后,Slick Slider 问题“onclick”不起作用
- mysql - Mysql选择行项目作为列
- ruby-on-rails - 错误操作导致 Ransack Rails 进程出现问题
- javascript - Dropzone - 无法设置自定义 Dropzone.js 选项
- spring - 为什么我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误
- php - wordpress 插件如何保存设置信息?
- jquery - 如何使用 django 和 ajax 在下拉列表中显示结果
- email - 尽管设置了 PTR 和 SPF,但 Gmail 拒绝电子邮件