浏览器在发送请求进行身份验证时不保存 cookie

问题描述 投票:0回答:1

所以我使用express构建了一个API。现在我正在使用 React 和 Vite 创建前端。 当我的前端向 api 登录路由发送请求时,响应包含会话 ID 相应的 Set-Cookie 标头。但是,cookie 并未保存在浏览器中。 由于它正在开发中,前端由与后端不同的端口提供服务。我知道这可能是问题所在,但我不确定。

我在某处读到代理请求可能会有所帮助,但我仍然没有看到 cookie 被存储。 由于 CORS 问题,后端不会拒绝请求,我已在后端包含 CORS 中间件,正如我所说,服务器正在响应,只是前端没有存储 cookie。 我该如何解决这个问题?

reactjs express cookies cors
1个回答
0
投票

解决方案
正如这个问题的解决方案所示,我必须对CORS中间件进行一些修改:

app.use(
  cors({
  origin: "http://localhost:5173",
  methods: ["POST", "PUT", "GET", "OPTIONS", "HEAD"],
  credentials: true,
})
);

还有 axios 请求:

await axios.post(
  "http://localhost:3000/auth/login",
  {
    password,
  },
  {
    withCredentials: true,
  }
);

进行这些更改后,浏览器成功保存了会话 cookie。

© www.soinside.com 2019 - 2024. All rights reserved.