【问题标题】:Cookie not reading or setting properlyCookie 未正确读取或设置
【发布时间】:2014-08-06 23:28:46
【问题描述】:

所以我的 Express 应用中有一个路由,其中​​包含两个中间件:

app.foo('/thisRoute', fancyMiddleware.one, fancyMiddleware.two);

两个中间件的功能都很好。但是,在fancyMiddleware.one 我有这个:

var one = function(req, res, next) {
 ...
 ...
 res.cookie('myCookie', data, {maxAge: 3600000});

 console.log(req.cookies.myCookie)

 return next();
}

为了测试我使用PostMan 来测试我的所有请求的所有内容。

req.cookies.myCookie 的记录输出始终返回 undefined。但在 Body 选项卡中,我可以看到 cookie 存在。

如果我在fancyMiddleware.two 中注销相同的cookie,它也是undefined

为什么返回 undefined?

编辑:所以,在给出了几个“为什么”的答案后,我现在意识到我也应该问:

如何读取我刚刚设置的 cookie?

我在fancyMiddleware.one 中设置它后真的 不需要它,但我确实fancyMiddleware.two 中需要它

编辑 2:我忘了提到我正在使用 Express 3 设置。大概是相关的。

【问题讨论】:

    标签: javascript node.js cookies express postman


    【解决方案1】:

    req.cookies 仅在执行 cookie 解析器中间件时填充一次。

    res.cookie() 立即设置Set-Cookie 标头,因此您必须使用res.get('Set-Cookie') 来查看当前值。

    【讨论】:

    • 所以在我的服务器中我设置了app.use(connect.cookieParser());。据我了解,app.use() 使任何中间件包含在每条路由上都起火。我还尝试将我的第二个中间件移动到另一个路由,然后在我的第一个路由结束时重定向到第二个(认为这会导致 cookie 解析器触发)。但是,结果相同
    【解决方案2】:

    您正在响应对象res 上设置cookie,但您是从请求req 中询问它。

    【讨论】:

      猜你喜欢
      • 2012-10-10
      • 2018-04-12
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多