Express JS 设置 cookie 在使用 res.json 时不起作用



我有一个login路由,我想在验证登录凭据后设置一个cookie。客户端和服务器在不同的端口.

const app = express();
app.use(
cors({
credentials: true,
origin: true,
})
);
app.use(cookieParser());
app.use('/login', (req, res) => {
res.cookie('secureCookie', JSON.stringify({ id: 1 }), {
secure: false,
httpOnly: true,
});
return res.json({ success: true });
});
app.use('/check', (req, res) => {
console.log(req.cookies);
return res.json({ id: 1 });
});

问题是,登录请求返回后,我没有在devtools(应用程序选项卡)中看到cookie。此外,当尝试使用credentials: 'include'获取check端点时,它不会发送cookie。

我做错了什么?

请求如下:

fetch('http://localhost:4000/login');
fetch('http://localhost:4000/check', {
credentials: 'include',
});

根据mdn上的Using Fetch文章

除非fetch()调用时设置了凭据选项,否则fetch():

  • 不会在跨域请求中发送cookie
  • 不会设置在跨域响应中返回的任何cookie

credentials: include必须设置为请求保存cookie

delete return

res.json({ success: true });

最新更新