无法访问客户端的Cookie | NodeJS和JS

时间:2019-11-25 18:02:24

标签: javascript node.js express

服务器端代码:

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']);

然后我变得不确定

1 个答案:

答案 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 "";
}