1

我在express api参考中看到了数据

cookie 的 expressjs api 参考

在文档中,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 什么的,我该如何解决?

4

2 回答 2

0

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

作为程序员,您需要使用以下方法将该对象转换为 JSON JSON.stringify

var cookieValue = JSON.stringify({test: ['test1', 'test2']}, { maxAge: 900000, httpOnly: true});
res.cookie('cookietmp', cookieValue);
于 2012-09-03T04:11:55.227 回答
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).
于 2018-06-01T13:02:43.557 回答