Javascript document.cookie总是空字符串

Men*_*ual 34 javascript cookies

我有客户端javascript设置cookie这个真正奇怪的问题.我正在开发一个小页面的演示,目前使用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);
Run Code Online (Sandbox Code Playgroud)

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

> document.cookie = "foo=bar";
"foo=bar"
> document.cookie
""
Run Code Online (Sandbox Code Playgroud)

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

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

Sti*_*itt 58

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

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

  • 我认为它得到了赞成,因为:`1)` 人们实际上经常尝试从 JS 读取例如会话 cookie。`2)` 结果他们得到空字符串。`3)`他们谷歌并来到这里。`4)` 他们看到了这个答案,该死的,这正是正在发生的事情。`5)`谢谢男人+1。:) (3认同)
  • 好吧,这太糟糕了,因为答案没有回答在 js 中编写 cookie 时明确的问题 (3认同)
  • 令我感到困惑的是,为什么“答案”遭到了如此多的反对,因为不可能在用JavaScript编写的cookie上设置HttpOnly。 (2认同)
  • 标题:`Javascript document.cookie 总是空字符串`。答:当只有设置了 `HttpOnly` 标志的 cookie 时可能会发生。不,你不能*写*来自 JS 的这些 cookie,但你可以*尝试*从 JS 读取 cookie,它会返回......空字符串......即使你在 HTTP 标头和浏览器中看到了 cookie检查员,JS 不允许您阅读它。 (2认同)
  • 是的,但是标题在搜索引擎优化方面击败了问题......就谷歌排名而言,这*是*问题。人们找到了它,我的答案实际上回答了他们的问题(不是OP的,但他已经得到了他的答案),所以他们投票。 (2认同)
  • 如果 cookie 是 *not* HttpOnly 怎么办。这个问题还有其他原因吗? (2认同)

Men*_*ual 45

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

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

然而:

http://localhost/demo/demo.html 作品.

  • 实际上 cookie 不能与 `localhost` 一起正常工作,您需要一个“有效”域,即使它是 IP,例如 127.0.0.1 或 0.0.0.0。检查 http://stackoverflow.com/questions/1134290/cookies-on-localhost-with-explicit-domain/1188145#1188145 (14认同)
  • 在我知道它之前,这让我震惊了几次。 (2认同)
  • 实际上,Firefox 确实允许从文件页面读取 cookie。Chrome 和 IE 没有 (2认同)