所以我使用express构建了一个API。现在我正在使用 React 和 Vite 创建前端。 当我的前端向 api 登录路由发送请求时,响应包含会话 ID 相应的 Set-Cookie 标头。但是,cookie 并未保存在浏览器中。 由于它正在开发中,前端由与后端不同的端口提供服务。我知道这可能是问题所在,但我不确定。
我在某处读到代理请求可能会有所帮助,但我仍然没有看到 cookie 被存储。 由于 CORS 问题,后端不会拒绝请求,我已在后端包含 CORS 中间件,正如我所说,服务器正在响应,只是前端没有存储 cookie。 我该如何解决这个问题?
解决方案
正如这个问题的解决方案所示,我必须对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。