在express.js中设置cookie出现j:前缀

时间:2016-07-03 07:17:59

标签: javascript node.js express

我尝试使用res.cookie设置Cookie,如下所示:

res.cookie('userId',req.user._id); //set cookie here
console.log(req.user._id); //returned correct value, eg abc

然后我看到了j:" abc"在我的cookie中,为什么会发生这种情况?

4 个答案:

答案 0 :(得分:5)

我知道这有点晚了,但我自己也遇到了这个问题并且一直在挖掘。他们似乎在为任何JSON字符串添加前缀" j:"所以他们知道在解析它时它是一个JSON字符串。这基本上意味着你必须手动删除" j:"如果您正在使用其他方式解析它。

答案 1 :(得分:1)

Cookie被加密到客户端。你需要一个cookie-parser 从cookie中正确获取user.id。请参阅其文档以供使用。

答案 2 :(得分:1)

根据Express 4 docsres.cookie(name, value [, options])将Cookie名称设置为值。 value参数可以是转换为JSON的字符串或对象。

在这种情况下,req.user._id是一个对象,因此您可以将Cookie设置为res.cookie('userId', JSON.stringify(req.user._id))

答案 3 :(得分:0)

所以我使用cookie-parser& NodeJS端的快速会话,客户端的ng2-cookies。我还希望将userId读作59bca61b74d1cac10ce50d0c而不是j:59bca61b74d1cac10ce50d0c :(

所以,我不是必须在客户端做一些魔术我只是做了res.cookie('cookieName', cookieValue.toString(), cookieOptions),这给了我正在寻找的东西。

执行console.log('cookies', req.cookies)显示一切正常,但req.headers.cookie显示2个userId cookies(仍在测试)