【问题标题】:Node JS cookie parser not working节点 JS cookie 解析器不工作
【发布时间】:2016-09-18 21:15:39
【问题描述】:

我正在关注https://www.codementor.io/nodejs/tutorial/cookie-management-in-express-js 的教程。我想在我的 Web 应用程序中使用 cookie 来验证对我使用 Node JS 构建的 API 的请求。要在用户登录时设置 cookie,我使用这行代码:

res.cookie('crewcookie', userkey, { maxAge: 9000000, httpOnly: true });
res.status(200).json({status: 1, data: userdata});

由于 httpOnly 为真,我尝试在向我的 API 发出另一个请求时检查 cookie,如下所示:

console.log(req.cookies);

在我的脚本顶部,我有以下内容:

var cookieParser = require('cookie-parser');
app.use(cookieParser());

我似乎无法正常工作,因为当我在后续请求中检查 cookie 时,日志显示如下:

{}

可能值得一提的是,我在前面使用的是 Angular JS。我在这里做错了什么?

【问题讨论】:

  • API 是否在与正在加载的页面相同的域和端口上设置/检查 cookie?
  • 我不知道它必须在同一个端口上。有没有办法让它只有同一个域,还是我别无选择?
  • 如果不同的端口被浏览器视为跨域。要从客户端发送 cookie,需要在所有请求上使用 withCredentials。请参阅$http 文档

标签: javascript angularjs node.js cookies


【解决方案1】:

我在使用 React 时遇到了类似的问题,并且花了一段时间才意识到问题可能在于在 开发 环境与生产环境中使用 cookie。如果您在设置后立即记录“req.cookies”,很确定您会看到它已被保存 - 它稍后会被删除(可能在重定向之后)。
但是,在生产环境中,cookie 已设置(在我的情况下),并且可以在重定向后使用 req.cookies 检索。
我会在你需要 cookie 的代码中添加一个 if 语句,类似这样(表达):

if (process.env.NODE_ENV === 'production'){...}

这样cookies的使用将仅在生产环境中进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2015-08-16
    • 2018-10-23
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多