我在快速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还是什么,我该如何解决呢?
答案 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).