【问题标题】:IE8 blocking JavaScript CookiesIE8 阻止 JavaScript Cookie
【发布时间】:2012-11-27 23:13:18
【问题描述】:

这是一个让我陷入循环的问题。我正在尝试在 IE8 上设置一个具有一个名称:值对的简单 cookie。在FF上测试过,效果很好。 IE8 一直在阻止它。

我已经阅读了有关 P3P 的内容并创建了一个基本的 P3P 文档,IBM 工具没有报告任何错误,并在所有页面上添加了以下内容:

<meta http-equiv="P3P" CP="CAO DSP COR PSDa CONi TELi OUR STP COM NAV"><link rel="P3Pv1" href="/w3c/p3p.xml"></link>

我用来设置cookie的代码如下:

function setCompatibilityCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie= c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toUTCString());}

你知道为什么 IE8 一直阻止我设置这个 cookie 吗?

谢谢你, 沙尔克

【问题讨论】:

  • 您是从“第三方”文档(即在 IFRAME 中)设置 cookie 吗?
  • 不,它只是一个 HTML 页面。我实际上已将代码隔离到一个简单的 HTML 页面,该页面有两个链接,一个设置 cookie,另一个获取 cookie 值并将其打印到页面。这在 Firefox 中完美运行,但在 IE8 和 Chrome 中,cookie 永远不会设置。
  • 现在已经在虚拟机上运行的 IE6 上对其进行了测试,并且它也被阻止在那里,所以这是一些奇怪的 IE 事情。无论如何,你可以在这里看到我使用的最新代码:pastebin.com/yB8WSDjW

标签: javascript cookies blocking internet-explorer-8


【解决方案1】:

我遇到了同样的问题,并花了很多时间研究为什么 IE 不会保存我的 JS cookie。我的 P3P 东西没问题,IE 正在保存响应 cookie,但不是 JS。

突然,最令人惊讶的是,我通过从 html 中删除以下行找到了解决方案:

我不知道为什么会这样,但这解决了我所有的问题。希望这对某人有所帮助。

【讨论】:

  • 虽然现在我相信这个问题是由“charset=utf-8”部分造成的。
【解决方案2】:

一个问题可能是您使用的是getDate(),它返回月份中的日期。如果您的expiredays 太大,它应该滚动到下个月,但在 IE 中它可能会停留在本月并立即到期。也许试试这个:

function setCompatibilityCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setTime(exdate.getTime() + (expiredays * 86400000));
document.cookie= c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toUTCString());}

【讨论】:

  • 您好 Andres,感谢您的建议,我已经尝试过了,但问题仍然存在。请参阅我对 Philippe 上述问题的评论。
  • 好的,chrome 之所以“阻止”我的 cookie 是因为这个问题 code.google.com/p/chromium/issues/detail?id=535,您可以在此处阅读有关如何解决此问题的更多信息:stackoverflow.com/questions/335244/…:现在它只是 IE8 ,真是个惊喜;)
  • 所以您的页面是从本地文件系统加载的,而不是从远程服务器加载的?我认为这也是您的 IE 问题。我知道我以前,很多年和很多年前就遇到过这种情况。基本上,每当您从本地资源(您的硬盘驱动器或本地共享)加载文件时,浏览器的行为完全不同。在 IE 中,您过去几乎可以在本地做任何您想做的事情(HTA 很棒)。然后安全模型改变了,聚会结束了。您是在开发旨在在本地运行的应用程序,还是只是使用本地驱动器进行开发和测试?
  • 嘿 Andrew,我最初在运行服务器页面时遇到了问题。但是我随后隔离了问题并测试了本地文件。我查看了 jQuery Cookie 插件的源代码,看看它是如何完成的,看来我可能已经找到了问题所在。仍然需要测试它,因为我认为 IE8 可能允许从本地文件设置 cookie 但不读取,不完全确定。我在服务器上测试后会尽快通知您。
  • 好的,我现在在服务器上尝试了它.... 不走运 :( 从 IP 运行与 URL 相对的运行可能会有所不同吗?似乎其他 cookie 甚至在之前就被阻止了我尝试设置这个。所以现在我想知道当从一个 IP 运行到一个特定域时是否有不同的限制。似乎 IE8 默认将 IP 放在受限站点列表中。这是否敲响了警钟适合任何人吗?
【解决方案3】:

多年来,我一直在使用相同的代码在客户端设置 cookie,没有任何问题。我肯定会调查 IE 设置而不是代码本身。在 IE 中,您可以根据来源(如您所见)确定是否接受 cookie。我一定会从这里开始!祝你好运

【讨论】:

    【解决方案4】:

    我经历过这个并尝试了这里的一些响应,我的发行结果是到期。我将它设置为 99999999999,但是当我将它降低到 9999999 时它起作用了。好像IE8有过期限制(天才微软,纯天才:s)

    【讨论】:

      【解决方案5】:

      我也遇到过同样的情况,问题是...expiredays 是这样的关键字,仅适用于 IE。如果您在whateveryouwant 中更改expiredays 变量的名称,它可以在所有浏览器上正常工作。

      【讨论】:

        【解决方案6】:

        我也遇到过这个问题,结果发现它与 cookie 名称的长度有关。在这种情况下,我有一个 26 个字符的 cookie 名称,这在 IE 8 及以下版本之外的任何地方都可以正常工作。我将名称缩短为只有 10 个字符,突然间 IE 8 可以很好地读取/写入 cookie。我假设这里的任意限制是 IE 8 cookie 名称的 16 个字符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-19
          • 1970-01-01
          • 2020-12-09
          • 2020-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多