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

Security IE 11第一方会话cookie在iframe中丢失,security,internet-explorer,iframe,cookies,cross-domain,Security,Internet Explorer,Iframe,Cookies,Cross Domain,我们有一个网站(www.example.com),它将用户发送到一系列第三方页面,以验证付款详细信息,我们在iframe中这样做。最初,来自www.example.com的本地页面被加载到iframe中,用户被重定向到第三方URL。一旦用户完成第三方步骤,它们将被302重定向回iframe内我们网站(www.example.com)上的页面 这适用于我们测试过的所有浏览器,但IE 11除外,在IE 11中,我们的cookie似乎丢失了。我们在Windows7和8.1下,在桌面和“Metro”模式

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

这适用于我们测试过的所有浏览器,但IE 11除外,在IE 11中,我们的cookie似乎丢失了。我们在Windows7和8.1下,在桌面和“Metro”模式下都检查了这一点,问题是所有版本都存在

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

如果我们将IE11的隐私设置设置为最低值,那么这个问题就会消失,一切都会按预期进行

到目前为止,我找到的所有可能的解决方案都与P3P标题相关。我们已经设置了一个有效且正确的P3P头和XML策略文件,而这个问题只发生在IE 11中


更新:我们使用JS设置了一些其他cookie。这些都如预期的那样持续存在。区别在于到期日期(JS cookie为1年,会话cookie为1个月)、域(JS cookie显式为“example.com”,会话cookie为空)以及它们是否为“仅HTTP”(JS cookie为false,会话cookie为true)

我尝试过根据会话cookie的JS cookie设置所有这些选项,但没有任何区别


更新2:经过更多测试后,我无法创建一个重新创建此问题的测试用例。但是,我尝试在实时代码中测试的任何其他cookie也似乎被破坏,即使它们使用的代码与工作的JS cookie完全相同。简言之我还没有发现曲奇饼中哪些有效,哪些无效的模式

需要注意的一件潜在的有趣的事情是,cookies没有被删除,只是没有被发送到最终请求。如果加载了另一个页面,cookies会神奇地重新出现并发送;这让我相信这是一个围绕iFrame和P3P的bug



更新3(第3天):IE 11对cookies的处理继续让我感到困惑。我越是深入微软的迷宫,我就越是迷失在它不断变化的墙壁之中。这里有鬼魂。半梦幻般的安全政策的碎片已经编织成某种虚幻的生物,它在我的每一个动作中跟踪和嘲弄我。起初,我被这个几乎不可预测的身影吓得目瞪口呆,惊恐万分,但随着时间的推移,我只知道它离我越来越近,我就感到越来越舒服。这就是我被派到这里来对抗的野兽吗?在这种时候,我怎么能杀死我唯一的同伴呢?

在IE11中查看你的互联网选项。 工具>互联网选项>隐私>高级


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

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

我们的站点被放置在一个iframe中,并使用会话到cookie(asp.net_会话)。虽然在站点中导航没有问题(cookies正在工作并附加到请求标题)。但当我们将客户重定向到另一个网站(othersite.com)时,othersite.com将客户重定向到我们的域并强制其以“_top”的形式打开,浏览器不会发送带有请求的cookies,因此我们丢失了客户会话。这个问题只发生在IE上


您有什么建议可以解决此问题。

我注意到,当IE7兼容模式用于新页面时,会话cookie经常丢失。我想这同样适用于iframe。iframe发送的X-UA兼容标头值是否与父页面不同,或者与会话中的早期版本不同?比如,您的会话可能以IE=edge开始,而iframe页面将其设置为IE=7。如果是这样的话,IE似乎经常为兼容模式页面和会话cookie设置一个新的IE PID(但它似乎不会被传输)。

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

请求链如下所示:

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

我们的问题是由于无效的主机名。根据,我们的测试服务器URL中有下划线。如果URL不符合RFC952,Internet Explorer似乎会在通过https重定向时无声地删除会话cookie。当使用破折号而不是下划线时,一切正常

原始解决方案位于此相关microsoft错误通知单的更新2部分


希望这会对某人有所帮助。

您能显示您正在使用的P3P标题吗?
P3P:CP=“所有DSP COR CUR ADM PSA CONi我们的SAM OTR UNR LEG”
如果没有此标题,iframe中就不会出现预期的Cookie。有了它,一些Cookie可以正常工作,但有些似乎是随机的,却不能正常工作。我无法找到一种模式或与那些不起作用的模式有什么不同。试试美妙的诗歌莎士比亚!看看这个:-我花了几个小时试图让P3P和Cookie在一个iframe.放置一个无效的P3P头,比如
我们没有P3P
,它工作得很好。不幸的是,我从未找到解决这个问题的方法,我知道继承它的开发人员在一年左右后遇到了这个问题。检查你的P3P头,祝你好运!有趣的是,我在2008年发现了这个问题-域名中的下划线并不是全部欠的,为了这个