这在我们测试过的所有浏览器中都有效,除了IE 11,在其中我们似乎丢失了cookie。我们已经在Windows 7和8.1上检查过,在桌面和“Metro”模式下都是如此,并且问题涵盖所有版本。 当用户浏览我们的网站时,我们设置了一个session cookie,它被正确地发送到最初加载在iframe中的第一方页面。然而,一旦用户通过此iframe进入了一些第三方页面,会话cookie就不会随着下一个请求被发送。
如果将IE 11的隐私设置设置为最低值,则此问题消失并且事情可以按预期进行。
到目前为止,我找到的所有潜在解决方案都与P3P标头有关。我们已经设置了有效和正确的P3P标头和XML策略文件,而此问题仅在IE 11中出现。
更新:我们使用JS设置了几个其他cookie。所有这些cookie都能按预期持久化。区别在于到期日期(JS cookie为1年,会话cookie为1个月)、域(JS cookie明确为“example.com”,会话cookie为空)以及它们是否为“HTTP only”(JS cookie为false,会话cookie为true)。
我已尝试将会话cookie的所有选项设置为与JS cookie相同,但没有任何作用。
更新2:经过更多测试,我无法创建一个能够重新创建此问题的测试案例。但是,在实际代码中尝试进行其他cookie测试时,即使它们与有效的JS cookie使用完全相同的代码进行设置,它们也似乎无法正常工作。简而言之,我还没有找到工作和不工作cookie的任何模式。
需要注意的一点是Cookie并未被删除,只是没有发送到最终请求。如果加载了另一个页面,则Cookie会神奇地重新出现并发送;这让我认为这可能与iframes和P3P相关的错误。
更新3(第3天):IE 11对Cookies的处理仍然令我困惑。我越进入微软的迷宫,就越迷失在不断变换的墙壁之间。这里有幽灵。半梦半醒的安全策略碎片组成了某种虚幻的生物,跟踪并嘲弄着我的每一个动作。起初,我惊呆了,害怕极了,看到那难以理解的形态飞快地逃离视线,但随着时间的推移,我从知道它就在我身边中获得了更多的安慰。这难道就是我来这里要面对的野兽吗?我如何能在这样的时刻杀死我唯一的伴侣呢?