问题:在IE6中,Frame和 IFrame中无法按常规方法来读写cookies。
原因:因为IE6加入了以Platform for Privacy Preferences(P3P)为基础的 隐私保护功能,用户可以根据cookie的发信方是否提供第一方(信息接收人)还是第三方(共享信息的第三者)、信息的接收及使用、散发的选择项(用户是否拒绝将信息提供给第三者进行二次利用)等相关信息,来调节cookie的接收与否。
解决:只需要设置 P3P HTTP Header,在隐含 iframe 里面跨域设置 cookie 就可以成功。如有验证码 ,验证码界面也需跨域设置 cookie
具体的内容是:P3P: CP=’CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR’
示例:
ASP:
1
|
<%Response.AddHeader
"P3P"
,
"CP=CAO PSA OUR"
%>
|
php:
1
|
header(
'P3P: CP=CAO PSA OUR'
);
|
ASP.NET:
1
|
Response.AppendHeader(
"P3P"
,
"CP=CAO PSA OUR"
);
|
JSP:
1
|
response.setHeader(
"P3P"
,
"CP=CAO PSA OUR"
)
|