【发布时间】:2014-08-14 14:36:25
【问题描述】:
我们有一个网站 (www.example.com),它将用户发送到一系列第三方页面以验证付款详细信息,我们在 iframe 中执行此操作。最初,来自 www.example.com 的本地页面被加载到 iframe 中,并且用户被重定向到第三方 URL。用户完成第三方步骤后,它们会被 302 重定向回 iframe 内我们网站 (www.example.com) 上的页面。
这适用于我们测试过的所有浏览器,除了 IE 11,我们的 cookie 似乎丢失了。我们在 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 标头吗?
-
P3P: CP="ALL DSP COR CUR ADM PSA CONi OUR SAM OTR UNR LEG"如果没有此标头,则 iframe 中没有任何 cookie,正如预期的那样。有了它,一些 cookie 正在工作,但有些看似随机的却没有。我无法找到一种模式或任何与那些不起作用的模式不同的地方。 -
好诗莎士比亚!
-
看到这个:stackoverflow.com/a/16475093/457850 - 我花了几个小时试图让 P3P 和 cookie 在 iframe 中很好地播放。放置一个无效的 P3P 标头,例如
we do not have P3P,它可以正常工作。
标签: security internet-explorer iframe cookies cross-domain