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

我们有一个网站(www.example.com),它将用户发送到一系列第三方页面来validation支付细节,我们在iframe中执行此操作。 最初,来自www.example.com的本地页面被加载到iframe中,并且用户被redirect到第三方URL。 一旦用户完成了第三方的步骤,他们就会被redirect回到我们网站(www.example.com)中的iframe内的页面。

这适用于我们testing过的所有浏览器,除了IE 11,我们的cookies似乎丢失了。 我们已经在Windows 7和8.1下同时在桌面和“Metro”模式下进行了检查,问题是所有版本。

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

如果我们将IE 11的隐私设置设置为最低值,则此问题消失,事情按预期工作。

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


更新:我们有一些使用JS设置的其他cookie。 这些都是如预期般坚持。 不同的是到期date(1年的JScookies,1个月的会话cookie),域名(明确“example.com”的JScookies,空的会话cookie),以及他们是否“仅HTTP”(假JS cookies,会话cookie为true)。

我已经尝试设置所有这些选项作为会话cookie的JS Cookie,但没有什么区别。


更新2:经过更多的testing,我一直无法创build一个testing用例来重现这个问题。 任何额外的cookies,我尝试在实时代码中testing,但似乎也被打破,即使他们设置完全相同的代码作为工作的JScookies。 简而言之; 我还没有find任何工作和不工作的cookies模式。

一个可能有趣的事情要注意的是,Cookie不会被删除,他们只是没有被发送到最后的要求。 如果加载了另外一个页面,cookies会奇迹般的重新出现并被发送; 这导致我相信这是一个围绕iframe和P3P的bug。


更新3(第3天): IE 11的Cookie处理继续混淆我。 我进入微软迷宫的路越远,我就越是迷失了自己。 这里有鬼。 半梦见的安全政策碎片已经把自己编织成了一个空灵的动物,一举一动跟踪和嘲笑我。 起初,我惊呆了,惊恐地发现,几乎不可思议的forms只是在视线之外飞奔而来,但随着时间的推移,我只能从其接近的知识中获得更多的安慰。 难道这是我被派到这里面对的野兽吗? 我怎么能在这样的时候杀死我唯一的同伴?

我们遇到了类似的问题与Internet Explorer 11中的会话cookie丢失redirecthttps后。

请求链看起来像这样:

初始请求到/ – > 会话cookie设置 – > redirect到外部URL – > redirect回 (会话cookie丢失)

我们的问题是由于根据RFC952的无效主机名称,我们在我们的testing服务器URL中强调了这一点。 如果URL不符合RFC952,Internet Explorer似乎会在通过httpsredirect时以静默方式丢弃会话cookie。 当使用破折号而不是下划线时,一切按预期工作。

原来的解决scheme是在2004年的这个asp.net博客的更新2部分中find的。

希望这会帮助某人。

我注意到当IE7兼容模式用于新页面时,会话cookie通常会丢失。 我想这也适用于iframe。 iframe是否发送与父页面不同的X-UA兼容标头值,或者与会话中的早期版本不同? 就像也许你的会话开始与IE =边缘,并在iframe页面设置为IE = 7。 如果是这样,IE浏览器似乎旋转了一个新的IE PID的兼容模式页面和会话cookies往往(但似乎没有得到转移。

我有这个话题提到的同样的问题。

我们的网站被放置在一个iframe和使用会话cookie(asp.net_session)。 而在网站导航没有问题(cookies工作,并附加到请求标题)。 但是,当我们将客户redirect到另一个网站(othersite.com),然后othersite.com将客户redirect到我们的域名并强制它打开为“_top”时,浏览器不会将请求发送给cookie,以致我们丢失了客户会话。 这个问题只发生在IE浏览器上。

你有什么build议来解决这个问题。

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

也许你应该重写,并启用“始终允许会话cookie”。