小编Aus*_*ler的帖子

使用 React Axios POST 请求时未设置 Express Session Cookie

设置

我已经使用 create-react-app 设置了一个前端环境。在这种环境中,我使用 Axios 向我的 Node JS Express 后端服务器 /login 端点发出 POST 请求。我使用 express-sessions 设置会话中间件并将会话存储在 Redis 中。我目前在本地主机上运行所有这些。

环境

  • React App - http://localhost:3005/kp(注意:该服务在 http://localhost:3005 上运行,但是所有路由都包含 /kp)

  • 快速后端 - http://localhost:5001

  • Redis - http://localhost:6379

什么有效

当前端向后端发送请求时,Express 服务器会执行它的操作并对用户进行身份验证;它将用户名存储在 req.session.username 中(这只是一个测试),Redis 控制台显示键值存储成功,前端网络选项卡显示 200 状态,带有 Set-Cookie 响应标头和一个选项卡显示 cookie(下面的屏幕截图)。

问题

一切似乎都运行良好,但 cookie 未在浏览器中设置。我刷新了页面,再试了很多次,但它不会在任何浏览器(谷歌 Chrome 和 Safari)中设置 cookie。我感到很沮丧,因为 Chrome 似乎承认 Set-Cookie 存在,但出于某种原因忽略了它。

我试过的

阿克西奥斯

  1. 我试过设置 withCredentials: true - 不起作用
  2. 使用 Set-Cookie 验证 cookie 在 POST 请求后被发送回前端

后端

  1. 我已经检查了我的 CORS 政策,但它们看起来很好;但是,我对 CORS 不是很好,所以那里可能存在配置错误
  2. 尝试在 CORS 策略中将凭据设置为 true
  3. 验证会话是否正在使用 …

cookies redis express reactjs axios

7
推荐指数
1
解决办法
4903
查看次数

标签 统计

axios ×1

cookies ×1

express ×1

reactjs ×1

redis ×1