IE 11第一方会话Cookie在iframe中丢失


69

我们有一个网站(www.example.com),该网站将用户带到一系列第三方页面以验证付款详细信息,这在iframe中进行。最初,来自www.example.com的本地页面被加载到iframe中,并且用户被重定向到第三方URL。用户完成第三方步骤后,会将它们重定向302到iframe中我们网站(www.example.com)上的页面。

此功能适用于我们测试过的所有浏览器,但IE 11似乎已丢失,但IE 11除外。我们已经在Windows 7和8.1的台式机和“ Metro”模式下检查了此问题,并且所有版本均存在此问题。

当用户浏览我们的网站时,我们会设置一个会话cookie,该会话cookie会正确发送到最初加载到iframe中的第一方页面。但是,一旦用户浏览了该iframe中的某些第三方页面,会话cookie就不会与下一个请求一起发送。

如果我们将IE 11的隐私设置设为最低值,则此问题将消失,并且一切正常。

到目前为止,我发现的所有潜在解决方案都与P3P标头相关。我们已经建立了有效且正确的P3P标头和XML策略文件,并且此问题仅在IE 11中出现。


更新:我们还有其他一些使用JS设置的cookie。这些都按预期持续存在。不同之处在于有效期(对于JS cookie来说是1年,对于会话cookie来说是1个月),域(对于JS cookie来说是“ example.com”,对于会话cookie来说是空)以及它们是否是“仅HTTP”(对于JS是false) cookie,适用于会话cookie)。

我已经尝试根据会话cookie的JS cookie设置所有这些选项,但是没有区别。


更新2:经过更多测试后,我无法创建一个重现此问题的测试用例。我尝试在实时代码中测试的任何其他cookie都似乎已损坏,即使它们设置的代码与可以正常工作的JS cookie完全相同。简而言之; 我还没有找到有效和无效的Cookie模式。

需要注意的一件事可能是,cookie并没有被删除,只是没有被发送到最终请求。如果加载了另一个页面,则cookie会神奇地重新出现并发送;这使我相信这是围绕iframe和P3P的错误。


更新3(第3天): IE 11对cookie的处理继续让我感到困惑。我越深入迷宫,迷失在不断变化的墙壁中的人就越多。而且这里有鬼。半梦半醒的安全政策的片段编织成某种空灵的生物,每走一步都会跟踪并嘲弄我。刚开始时,我以一种难以捉摸的形式被冻僵,恐惧,震惊,只是在视线之外飞了起来,但是每过一个小时,我就从其邻近性的知识中获得更多的安慰。这可能是我被派到这里面对的那只野兽吗?在这样的时候我怎么能杀死我唯一的同伴?


您可以显示您正在使用的P3P标头吗?
vtortola 2014年

P3P: CP="ALL DSP COR CUR ADM PSA CONi OUR SAM OTR UNR LEG" 如果没有此标头,则iframe无法在cookie中正常工作。有了它,有些cookie可以工作,但是有些(似乎是随机的)不能工作。我无法找到无法使用的模式或任何与之不同的模式。
Jaik Dean 2014年


14
好诗的莎士比亚!
大安2014年

1
看到这个:stackoverflow.com/a/16475093/457850-我花了数小时试图让P3P和cookie在iframe中很好地播放。像这样放置一个无效的P3P标头we do not have P3P,它就可以正常工作。
dtbaker

Answers:


8

我们在Internet Explorer 11中遇到了类似的问题,在通过https重定向后,会话cookie丢失了。

请求链看起来像这样:

对/ -> 会话Cookie设置的 初始请求-> 重定向到外部URL > 重定向回(会话cookie丢失)

我们的问题是由于根据RFC952的无效主机名造成的,我们的测试服务器URL中带有下划线。如果URL不符合RFC952,Internet Explorer似乎会在通过https重定向时静默删除会话cookie。当使用破折号而不是下划线时,一切都按预期方式工作。

原始解决方案位于2004年asp.net博客文章Update 2部分中相关的Microsoft bug票证在这里。

希望这会帮助某人。


有趣的是,我在2008年发现了这个问题-由于这个原因,不允许在域名中加下划线。
杰森FB

1
我恰好遇到了这个问题,并且也想出了主机名下划线的原因。编辑的主机文件解决了该问题(不是生产环境,所以没什么大不了的)。谢谢!
Amessihel

1

我注意到,当将IE7兼容模式用于新页面时,会话cookie通常会丢失。我想这同样适用于iframe。iframe是否发送的X-UA兼容标头值与父页面不同,或与会话中的早期页面不同?就像您的会话以IE = edge开始,然后iframe页面将其设置为IE = 7。如果是这样,IE似乎经常为兼容模式页面和会话cookie启动一个新的IE PID(但似乎没有转移。)


-1

我有与此主题中提到的相同的问题。

我们的网站位于iframe中,并使用会话连接到cookie(asp.net_session)。在站点中导航时没有问题(cookie可以正常工作并附加到请求标头中)。但是,当我们将客户重定向到另一个网站(othersite.com)时,othersite.com将客户重定向到我们的域并强制其以“ _top”打开,浏览器不会发送带有请求的cookie,因此我们失去了客户会话。仅在IE上发生此问题。

您可以提出什么建议来解决此问题。


不幸的是,我从未找到解决该问题的方法,而且我知道继承该问题的开发人员在大约一年后遇到了该问题。检查您的P3P标头,祝您好运!
Jaik Dean '02

-5

在IE11中检查您的Internet选项。工具> Internet选项>隐私>高级

也许您应该覆盖它并启用“始终允许会话cookie”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.