即使使用P3P标头,也无法在IE中的IFRAME中设置cookie

Wem*_*ick 6 cookies iframe internet-explorer cross-domain p3p

我在这里看到很多关于如何让IE在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帖子:在Internet Explorer中阻止/未保存在IFRAME中的Cookie但是我无法重现他在他的演示站点上能够做的事情:http://newmoon.wz.cz/test /page.php?send_p3p=1.我认为这是因为我得到了邪恶的眼睛,而他却没有.我已经完成了我所读到的所有内容,作为摆脱邪恶的建议,但它仍然存在.嘲笑我.

  • 如果您想尝试一下,我的测试页面就在这里:http://truelike.com/js/bobs/frametest.php在iframe外部查看时,设置/读取页面工作正常,但在内部无法正常工作使用IE时.

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

任何帮助都会非常感激 - 我们在这里绝望了.

谢谢!

Wem*_*ick 4

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

指令为 P3P 标头分配值,该值将与 cookie 一起发送。

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

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

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

而且,我的 CP 显然太激进了,尽管 IBM 的政策编辑说没关系。我使用了一个更基本的 CP,效果很好。