无法在其他域上设置Cookie。表达和反应
我的后端托管在一台服务器上,例如ackend.vercel.app,而前端托管在另一台服务器上,例如Frontend.vercel.app
每当用户向/login
路由发送请求时,我将Cookie设置如下:
const setCookie = (req, res, token) => {
res.cookie('jwt', token, {
expires: new Date(Date.now() + process.env.JWT_COOKIE_EXPIRES_IN * 24 * 60 * 60 * 1000)
});
};
在前端,我使用axios向backend.vercel.app/login
路由发送请求,{withCredentials: true}
但是,即使在成功登录之后,也没有设置Cookie。
cookie在后端API中,但不在前端: Image of available cookies
我错过了什么?
解决方案
更新:
我通过在登录请求中手动指定method: 'POST'
修复了此问题。
并且,在后台使用了这个中间件:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,UPDATE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
next();
});
多亏了Kenneth Lew的评论,我还应用了CORS配置。
干杯!
相关文章