情景:在做开心网APP开发的时候,开心网APP是用iframe引用的,在IE中发现不能读写cookies,而在Firefox和Chrome中正常。

问题:在IE6中,Frame和 IFrame中无法按常规方法来读写cookies。

原因:因为IE6加入了以Platform for Privacy Preferences(P3P)为基础的 隐私保护功能,用户可以根据cookie的发信方是否提供第一方(信息接收人)还是第三方(共享信息的第三者)、信息的接收及使用、散发的选择项(用户是否拒绝将信息提供给第三者进行二次利用)等相关信息,来调节cookie的接收与否。

解决:只需要设置 P3P HTTP Header,在隐含 iframe 里面跨域设置 cookie 就可以成功。

具体的内容是:P3P: CP=’CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR’

示例:

ASP:


<%Response.AddHeader "P3P", "CP=CAO PSA OUR"%>

 

php:


header('P3P: CP=CAO PSA OUR');

 

ASP.NET:


Response.AppendHeader("P3P", "CP=CAO PSA OUR");

 

JSP:


response.setHeader("P3P","CP=CAO PSA OUR")