【问题标题】:Why res.cookie is working from postman and doesn't from browser?为什么 res.cookie 在邮递员中工作而不是在浏览器中工作?
【发布时间】:2019-10-10 10:07:32
【问题描述】:

我尝试在登录后从我的 nodejs 服务器设置一个令牌。 我的客户端是反应应用程序,我使用 axios 发出发布请求。

当我尝试从邮递员登录时,我在我的 cookie 中看到了令牌,但在浏览器中没有 cookie。

这是服务器:

res.cookie("token", token, { httpOnly: true }).sendStatus(200);

这是客户:

  return axios.post(serviceUrl + "auth/login", data).then(response => {
    return response.data;
  });

【问题讨论】:

  • 您正在尝试使用您从服务器生成的令牌在客户端上设置 cookie 对吗?
  • 是的,没错。
  • 您查看过类似的网站吗? github.com/expressjs/cookie-session 根据您使用的框架,有很多前端 cookie 管理工具。您在客户端代码中所做的只是返回数据,而不是将其(特别是 cookie)存储在其他任何地方。

标签: javascript node.js express cookies axios


【解决方案1】:

我认为原因可能是您尝试设置 cookie 时未传递域选项。请尝试传递domain : "\" 选项,如

res.cookie("token", token, { httpOnly: true, domain : '\' }).sendStatus(200);

【讨论】:

    【解决方案2】:

    我想通了。 Chrome 不会在 localhost 中设置 cookie。 我检查了边缘,它像专家一样工作。

    【讨论】:

      【解决方案3】:

      默认情况下,不会为 localhost (Chrome) 存储 cookie。如果你想解决这个问题,你可以简单地在 chrome 开发工具中添加密钥。转到 Application>Storage>Cookies 并在里面粘贴“token”。

      【讨论】:

        猜你喜欢
        • 2018-07-11
        • 2020-05-18
        • 2020-07-10
        • 2019-10-02
        • 2014-10-09
        • 2017-10-03
        • 2020-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多