domain Javascript document.cookie总是空字符串




js-cookie npm (4)

我有这个真正奇怪的问题与客户端JavaScript设置cookie。 我正在开发一个小的1页演示,使用cookie来存储一些'偏好'。 请注意,我不能使用服务器端语言进行此演示或任何第三方jQuery插件。

所以我写了一个javascript对象来设置一个cookie:

var cookie = {
  set: function (name,value,exdays) {

    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=name + "=" + value;
    console.log(document.cookie);
  }
}

cookie.set('foo','bar',2);
console.log(document.cookie);

它只返回一个空字符串。 我已经进入Chrome控制台,看看我是否可以通过直接修改document.cookie

> document.cookie = "foo=bar";
"foo=bar"
> document.cookie
""

你如何通过客户端javascript设置cookie?

编辑:我未处于隐身模式且已启用Cookie。


Answer #1

无法从Javascript访问HttpOnly cookie,会话cookie通常设置为HttpOnly cookie。 另请参阅此问题: 如何使用JavaScript读取安全cookie

所以...检查你想要阅读的cookie是否设置了'HttpOnly'标志......如果是这样,你知道罪魁祸首。 这不是一个错误,这是一个功能!



Answer #3

当从localhost运行时,这对我有用,运行chrome 28.0.1472.0 canary:

<!DOCTYPE html>
<html>
<head>
  <title>localhost cookie</title>
</head>
<body>
  <script type="text/javascript">
    console.log(document.cookie);
    var myCookie = "mycookie=hellocookie";
    document.cookie = myCookie;
  </script>
</body>
</html>

在服务器中运行它,访问页面并查看您的cookie商店,刷新页面并查看您的控制台。

它作为文件打开时没有设置cookie,但每次从服务器打开时都会工作。


Answer #4

如果没有在Web服务器中运行,则无法通过外观设置cookie。

file:///C:/Users/me/Desktop/demo/demo.html

然而:

http://localhost/demo/demo.html有效。





cookies