res.cookie('test', 'value', { expire: 400000 + Date.now(), httpOnly: false });
res.writeHead(302, {
'Location': 'localhost:4000/test',
});
res.end();
当我有console.log(document.cookie);
之后,我可以在开发工具的控制台中看到cookie
当我尝试获取一个Cookie console.log(document.cookie.test);
或console.log(document.cookie['test']);
然后我变得不确定
答案 0 :(得分:3)
这是预期的行为。您在服务器端做的正确。
在浏览器的另一侧,cookie被保存为以半列分隔的字符串。每个Cookie均包含键值对,并以=
分隔。
在您的情况下,cookie的格式如下:
"test=value"
如果添加cookie“ test2”和值“ value2”,则将具有以下格式:
"test=value; test2=value2"
如果要获取基于值的cookie名称,则必须实现函数,该函数将解析字符串并手动提取值。
有关更多详细信息,请参阅以下answer。
这是W3Schools中的getCookie
个函数实现(这只是示例,未经我测试或实现):
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}