Internet explorer IE、P3P、IFrame和阻止的Cookie(在页面主机页面请求个人信息之前有效)

Internet explorer IE、P3P、IFrame和阻止的Cookie(在页面主机页面请求个人信息之前有效),internet-explorer,iframe,cookies,p3p,Internet Explorer,Iframe,Cookies,P3p,我的公司有一个可以插入购物车的小部件。我们遇到了一个问题,在IE7中设置cookie不起作用。这是因为我们是第三方,因为我们通过iframe嵌入到站点中 我看过几篇文章说,解决这个问题的方法是在标题中加入P3P契约策略。如上所述: 我已验证我的P3P策略是否在HTTP头中。它实际上适用于购物车站点的第一页/第一步,但一旦页面上有个人信息(如姓名、地址、电话等),即阻止我的站点和cookie 我尝试过几种不同的P3P政策,但它们在同一个地方都不起作用。我还使用IBMP3P工具生成了我自己的特殊P

我的公司有一个可以插入购物车的小部件。我们遇到了一个问题,在IE7中设置cookie不起作用。这是因为我们是第三方,因为我们通过iframe嵌入到站点中

我看过几篇文章说,解决这个问题的方法是在标题中加入P3P契约策略。如上所述:

我已验证我的P3P策略是否在HTTP头中。它实际上适用于购物车站点的第一页/第一步,但一旦页面上有个人信息(如姓名、地址、电话等),即阻止我的站点和cookie

我尝试过几种不同的P3P政策,但它们在同一个地方都不起作用。我还使用IBMP3P工具生成了我自己的特殊P3P策略,但它仍然不起作用


我完全不知所措。

我以前也有过类似的问题。确保将p3p标题添加到
iframe
中的所有页面中。Fiddler web调试器(www.fiddler2.com)在响应上有一个“隐私”检查器选项卡,用于将p3p标记解码为其含义。在inspector的底部有一个链接,指向MSDN文章,显示默认情况下哪些策略被认为是“可接受的”


当然,请注意,P3P政策是一项法律声明,因此您必须确保您对cookies的使用符合您在P3P中声明的内容。

这可能不会帮助任何其他人,但我为此而头痛了好几个星期。事实证明,IE 7不允许设置第三方cookie,即使使用有效的P3P压缩策略,如果内容类型的HTML元标记在带有iframe的页面上与iframe中的页面具有不同的字符集声明。

需要注意的是,Internet Explorer 7存在一个非常隐蔽的错误:在304(“未修改”)上iframe内的请求P3P头不会由web服务器按照RFC发送(除非您使用的是IIS,它不关心这些事情)。IE7实际上会在该特定请求期间删除任何cookie集


这将产生你上面描述的效果,所以可能就是这样。IE6和IE8(以及所有其他浏览器)都能正常工作。

我们遇到了上述问题,有304个请求(缓存内容)。我们的负载平衡器正在设置一个会话cookie,但是Apache web服务器不会为导致304结果代码的请求包含P3P头。这样,会话信息就会变得混乱


这是负载平衡器需要注意的问题。当他们为持久性跟踪设置cookie时,请确保它也生成P3P头,以确保它们始终同步发送。

我也遇到了同样的问题,决定采用Google/Facebook方法,伪造P3P头。但我最终还是遇到了一些问题

  • 首先,你必须确保你通过了所有标题
  • 如果您使用的是Visual Studio开发Web服务器,出于某种原因,P3P头将被忽略。因此,在IIS中托管您的应用程序
  • 问题1:

    要返回包含所有请求操作的标题,请将其添加到Global.asax中,并根据您的需要进行自定义:

     protected void Application_BeginRequest(Object sender, EventArgs e) {
                //
                HttpContext.Current.Response.AddHeader("P3P", "CP=\"This is not a P3P policy! See http://mydomain.com/privacy-policy for more info.\"");
            }
    
    问题2:

    非常不言自明。在IIS中托管项目

    当我读到W3C自2006年以来没有开发或更新该标准时,我决定绕过P3P。对我来说,这意味着它已经死了,我们只是有一个主要的浏览器强制执行一个死标准。这个项目是我的,我是客户。因此,如果你打算采取同样的行动,但你不是在为自己写东西,那就去看看那些权力


    干杯

    cookie应具有
    expires=Fri,14年12月19日18:00:40 GMT
    ,而不是
    最大年龄


    这是由config
    CookieStyle=Netscape

    提供的,谢谢您的提示。不过,我已经验证了我提供的所有内容都有p3p标题。(我使用了ieHTTPHeaders)Ok..在ie中更改隐私设置,然后用低安全性测试它。如果它能工作,那么问题在于你的源代码。您还可以将FF与web安全工具栏一起使用。更改隐私设置并使用Web developer工具栏查看cookie发生了什么。Shobab,谢谢您的提示。我降低了IE中的安全性,它将我网站的cookie状态从“阻止”更改为“限制”。这确实对我有用。这就足够了。我不确定我的源代码会有什么问题——也许我的p3p策略不够好?在哪里可以找到FF web安全工具栏?如果能找到一些东西告诉我为什么我的p3p策略不够好,那就太好了。搜索FF的Webdeveloper工具栏,你就会得到它。它是web开发人员必须使用的工具。这是你的p3p头球防守的问题。在WebDeveloper工具栏中,有一个选项可以检查p3p标题,所以请使用它。这就是我解决问题的方法。我知道你的感受,因为我在这个问题上支持了一个星期;-)请随时发电子邮件到shobankr[在]gmail.com给我,我会很乐意帮忙的。顺便说一句,Shoban是我的名字,不是shobab;-)再次感谢你,肖班。我找不到p3p头的验证程序。我可以使用web developer工具栏(v 1.1.6)查看我的p3p标题,但我看不到任何验证它的内容。Fiddler底部的链接将您带到该页面,该页面仅描述IE6可接受的策略:有人知道最近的参考吗?自IE6以来,p3p默认值没有改变。@EricLaw:当然,您的答案很古老,但是隐私检查标签从Fiddler上删除了吗?我正在运行Fiddler 4(仍然标记为Fiddler 2-v4.4.2.1 beta版),但我在任何地方都看不到它(我也不记得在以前的版本中看到过它),看起来它也会影响IE8。它给了我几分钟的希望