【问题标题】:Cookie sent from backend API (nodeJS express) to forntend (NextJS) is not being set in the browser从后端 API (nodeJS express) 发送到前端 (Next JS) 的 Cookie 未在浏览器中设置
【发布时间】:2021-08-28 16:19:12
【问题描述】:

我有一个在 localhost:3000 上运行的 NextJS 应用程序和一个在 localhost:3030 上运行的 node express API。请求从前端发送到后端登录路由后,我从后端 api 在前端设置了一个名为 refresh_token 的 cookie,当我检查请求时,我可以在网络检查器中看到 cookie,但它从未在前端设置过.请问如何解决这个问题?

axios 实例

const instance = axios.create({
    baseURL: 'http://localhost:3030',
});
export default instance;

前端代码

axios.post('/login', values, { withCredentials: true })
    .then((res) => {
        console.log('Response', res);
        console.log('Response Headers', res.headers);                
        setAuthorizationToken(res.data.data.tokens.accessToken);
        setSubmitting(false);
        router.push('/');
})
.catch((err) => {
        setSubmitting(false);
        setError(err.response ? 
            err.response.data.error.message : err.message
        );
})

【问题讨论】:

  • 请帮忙分享代码以获取更多信息
  • 好的,我会这样做的
  • 您可以再次运行请求,但这次检查标题选项卡吗?它是否在 Set-Cookie 响应标头旁边告诉您错误(应该有一个图标)?
  • @Calvin 谢谢这是一个非常有用的提示,我能够确定问题所在。谢谢

标签: javascript node.js reactjs cookies next.js


【解决方案1】:

我实际上发现了@Calvin 提示的问题,我是检查 cookie 并查看它有什么问题。原来我不应该在 cookie 上设置域,它可以工作。

错误代码

res.cookie('refresh_token', 
{ refreshToken }, {
    httpOnly: true,
    domain: 'localhost:3000',
    signed: true,
    maxAge: 60 * 60 * 24 * 7,
});

修复

res.cookie('refresh_token', 
{ refreshToken }, 
{
    httpOnly: true,
    signed: true,
    maxAge: 60 * 60 * 24 * 7,
});

【讨论】:

  • 对我不起作用
猜你喜欢
  • 1970-01-01
  • 2020-12-29
  • 2019-09-22
  • 2021-02-23
  • 2021-06-11
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多