Javascript document.cookie始终为空字符串

您所在的位置:网站首页 documentcookie获取不到 Javascript document.cookie始终为空字符串

Javascript document.cookie始终为空字符串

2023-12-03 01:35| 来源: 网络整理| 查看: 265

我在客户端javascript设置cookie中遇到了这个真正的奇怪问题。 我现在正在开发一个小页面演示,以使用cookie来存储一些"首选项"。 请注意,此演示或任何第三方jQuery插件都无法使用服务器端语言。

因此,我编写了一个JavaScript对象来设置Cookie:

12345678910111213var 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来做到这一点

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

您如何通过客户端JavaScript设置Cookie?

编辑:我没有进入隐身模式,并且启用了cookie。

相关讨论 另请参阅developer.mozilla.org/en-US/docs/DOM/document.cookie 有类似(但不相同)的问题。 我们可以读写cookie,但不是全部。 具体来说,会话cookie(JSESSIONID)无法读取...这似乎是一项安全功能,但是很难找到有关它的信息...有人知道吗? @StijndeWitt:那是一个不同的问题,请自己提出,而不要为此增加赏金。 顺便说一句,答案可能是http-only cookie

无法从Javascript访问HttpOnly cookie,并且通常将会话cookie设置为HttpOnly cookie。另请参阅以下StackOverflow问题: 如何使用JavaScript读取安全的Cookie

因此,请检查您要读取的cookie是否设置了" HttpOnly"标志。如果这样,您就知道是罪魁祸首。 这不是一个错误,这是一个功能!

相关讨论 令我感到困惑的是,"答案"为什么会如此之多,因为它不可能在用JavaScript编写的cookie上设置HttpOnly。 标题:Javascript document.cookie always empty string。答案:只有设置了HttpOnly标志的cookie时可能发生。不,您不能从JS编写这些cookie,但是您可以尝试从JS读取cookie,并且它将返回...空字符串...即使您在HTTP标头和浏览器检查器中看到该cookie,JS也不会允许您阅读它。 我认为这很受好评,因为:1)人们实际上经常尝试阅读例如来自JS的会话cookie。 2)结果是空字符串。 3)他们用谷歌搜索并来到这里。 4)他们看到并回答了这个问题,这就是正在发生的事情。 5)谢谢+1。 :) 好吧,那太糟糕了,因为答案没有回答这个问题,这显然是在用js编写cookie时 是的,但标题在搜索引擎优化方面胜过了这个问题。就Google排名而言,这是一个问题。人们找到了它,而我的答案实际上回答了他们的问题(不是操作者,但无论如何他已经得到了答案),所以他们投票赞成。 如果cookie不是HttpOnly,该怎么办。还有其他原因导致此问题吗? @alayor我不知道,不。如果您确实找到了这样的原因,我认为这实际上是添加答案的好地方,因为当前的答案似乎经常受到批评(很多人似乎都遇到了这些问题)

如果它不在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),您也需要一个"有效"域。检查stackoverflow.com/questions/1134290/ 你让我们很忙 我很久以来一直在寻找这个答案。...谢谢。 在大多数他们认为我们应该以某种方式知道的教程中,这也使我感到非常困惑,并且使我感到困惑 实际上,Firefox确实允许从文件页面读取cookie。 Chrome和IE不会

从本地运行chrome 28.0.1472.0 canary时,这对我有用:

12345678910111213DOCTYPE html>   localhost cookie       console.log(document.cookie);     var myCookie ="mycookie=hellocookie";     document.cookie = myCookie;  

在服务器上运行它,访问该页面并查看您的cookie存储,刷新页面并查看您的控制台。

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

有关用法和文档,请参见此处:

https://developer.mozilla.org/en-US/docs/DOM/document.cookie

如果您处于隐身模式或禁用了Cookie,则无法使用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3