在Iframe和Frame中默认是不支持Cookie跨域的,但通过设置P3P协议相关的响应头可以解决这一问题。
关于p3p协议:

P3P: Platform for Privacy Preferences(隐私偏好平台)。隐私偏好平台(P3P)是允许网络站点来宣告它们收集的关于浏览用户他们的意向使用的信息的一个协议。原意是当用户浏览时,授予用户他们个人信息的更多控制。

P3P是万维网联盟(W3C)公布的一项隐私保护推荐标准,旨在为网上冲浪的 Internet用户提供隐私保护。现在有越来越多的网站在消费者访问时,都会收集一些用户信息。制定P3P标准的出发点就是为了减轻消费者因网站收集个人信息所引发的对于隐私权可能受到侵犯的忧虑。P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然后决定是否接受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.AddHeader("P3P", "CP=CAO PSA OUR")

或者在Window服务中将ASP.NET State Service 启动。

JSP:

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

perl-cgi:

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

目前主流浏览器中仅有IE支持P3P。

原文链接

05-08 08:23