无法在其他域上设置Cookie。表达和反应

2022-07-23 00:00:00 axios reactjs node.js express javascript

我的后端托管在一台服务器上,例如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配置。

干杯!

相关文章