所以我在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
req.cookies
只在cookie解析器中间件执行时填充一次。
res.cookie()
立即设置Set-Cookie
头,所以你必须使用res.get('Set-Cookie')
来查看当前值。
您在响应对象res
上设置cookie,但是您是从请求req
请求它。