由json发送expressjs cookie

时间:2012-09-03 03:56:19

标签: json node.js cookies express

我在快速api参考中看到了数据

expressjs api reference for cookie

在文档中,cookie可以作为JSON res.cookie('cart', { items: [1,2,3] });

发送

所以我开始尝试,当我使用字符串时,cookie运行良好,但不是JSON格式。

   res.cookie('cookietmp',{test: ['test1', 'test2']}, { maxAge: 900000, httpOnly: true});
   res.send('test cookie: ' + req.cookies.cookietmp)

这是我的代码

和我的浏览器显示

   test cookie: [object Object]
似乎我的浏览器不知道格式是JSON还是什么,我该如何解决呢?

2 个答案:

答案 0 :(得分:0)

这是一个对象字面值,不是JSON。 JSON是一种序列化格式,但是设​​置为cookie值的东西不是字符串。您在浏览器中看到'[object Object]',因为这是Object.toString返回的内容。

你,编程人员,需要使用JSON.stringify将该对象转换为JSON:

var cookieValue = JSON.stringify({test: ['test1', 'test2']}, { maxAge: 900000, httpOnly: true});
res.cookie('cookietmp', cookieValue);

答案 1 :(得分:0)

您的Cookie已正确设置。问题是您在response对象上设置cookie,然后检查过时的request对象以获取cookie的值。更新response不会更新传入的request

console.log(req.cookies.cookieTmp)  // '[object Object]'

res.cookie('cookietmp',{test: ['test1', 'test2']}, { maxAge: 900000, httpOnly: true});
res.send('test cookie: ' + req.cookies.cookietmp)

console.log(req.cookies.cookieTmp)  // '[object Object]'
console.log(res.get('Cookie'))  // 'cookieTmp={test: ['test1', 'test2']}` (or urlencoded version of this).