【问题标题】:Cannot set cookies in IFRAME in IE, even with P3P header即使使用 P3P 标头,也无法在 IE 的 IFRAME 中设置 cookie
【发布时间】:2011-08-29 05:56:27
【问题描述】:

我在这里看到了很多关于如何让 cookie 在 IE 中的 iframe 中工作的帖子,并且我尝试了几种解决方案,但到目前为止都没有运气。这是我正在处理的问题:

  • 我有一个通过 Javascript 在客户网站上创建的 iframe(一个小部件)。我无法控制客户的网站。我需要设置 cookie 以使用户在 iframe 中保持登录状态,它适用于 Chrome 和 Firefox,但不适用于 IE 7/8。我没有测试过 IE 6,但我认为它也有同样的问题。

  • 我使用 IBM 的策略编辑器创建了一个 P3P 策略,编辑器说紧凑策略在 IE 的安全性下是可以接受的,无论它设置为低、中还是高。我使用的CP是:

P3P: policyref="/w3c/p3p.xml" CP="CAO DSP COR CURa ADMa DEVa PSAa PSDa CONi TELi OUR IND PHY ONL UNI COM NAV INT DEM CNT PRE"(我尝试了其他几个人们认为有效的 CP,但结果没有任何差异。)

  • 网络服务器 (NGINX) 正在使用 每个 文件提供此 P3P 标头。我不是从代码中提供它。

  • p3p.xml 文件存在且与压缩策略匹配。 p3p.xml 使用 W3C P3P 验证器进行验证。

  • 即使使用 P3P 标头(无论我尝试了哪一个),IE 都会在底部的状态栏中给我“邪恶的眼睛”,并且不会让我设置 cookie。它们在隐私报告中显示为已阻止。

  • 我阅读了 Piskvor 关于这个主题的 SO 帖子:Cookie blocked/not saved in IFRAME in Internet Explorer,但我无法重现他在演示网站上所做的事情:http://newmoon.wz.cz/test/page.php?send_p3p=1。我认为这是因为我得到了邪恶的眼睛而他没有。我已经完成了我所读到的一切作为摆脱邪恶的建议,但它仍然存在。嘲笑我。

  • 如果你想试试我的测试页面:http://truelike.com/js/bobs/frametest.php设置/读取页面在 iframe 外部查看时工作正常,但在使用 IE 时根本无法在内部工作。

  • 作为参考,我在后端使用 PHP。

任何帮助都将不胜感激 - 我们在这里变得绝望。

谢谢!

【问题讨论】:

    标签: internet-explorer cookies iframe cross-domain p3p


    【解决方案1】:

    nginx 0.8.20 的变化
    错误修正:“Set-Cookie”和“P3P”FastCGI 响应标题行是 如果没有“fastcgi_hide_header”指令,则在缓存时不隐藏 与任何参数一起使用。

    Nginx Changes log

    【讨论】:

      【解决方案2】:

      所以,我自己解决了这个问题。看起来问题出在 NGINX 的 HTTPUserIDModule (http://wiki.nginx.org/HttpUserIdModule) 上。我一直在使用它来发送 P3P 标头,但是 nginx 没有一致地发送标头,可能是由于他们文档中的这一行:

      指令为标题分配值 P3P,将与发送 饼干。

      我在使用 curl 或 lynx 检查时看到了标头,但在使用 Firebug 或 Charles 检查时却没有。也许有一个配置选项可以解决这个问题,但我找不到它。

      无论如何,如果您将标头指令拉出 HTTPUserIdModule 并在代码中手动发送标头,它就可以工作。如果您使用 HTTPHeadersModule http://wiki.nginx.org/HttpHeadersModule 手动发送标头,它可能会起作用,但我尚未对此进行测试。

      一旦它通过代码工作,我发现我不需要所有文件的标题 - 仅在文件设置/获取 cookie 上使用它就足够了,这与我看到的许多建议相反。

      此外,我的 CP 显然过于咄咄逼人,尽管 IBM 的政策编辑说没关系。我使用了一个更基本的 CP,并且效果很好。

      【讨论】:

      • 您是仅使用紧凑策略还是同时使用 p3p.xml 文件?你能说一下你在哪个网站上使用了这个政策吗?对于具有中等安全性和 p3p 策略的 IE8,我已经有一段时间了。
      • 我只使用了compact策略,具体来说:header('P3P: CP="CAO PSA OUR"');
      • 我会试试的。用户登录需要使用cookies吗?
      • 是的,除此之外,我愿意。
      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2016-08-28
      • 2013-08-23
      • 2013-12-26
      • 2019-05-07
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多