P3P Header 解决 Cookie 跨域的问题,需要的朋友可以参考一下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
P3P
P3P 是一種被稱為個人隱私安全平臺項目(the Platform for Privary Preferences)的標準,能夠保護在線隱私權,使 Internet 衝浪者可以選擇在瀏覽網頁時,是否被第三方收集並利用自己的個人信息。如果一個站點不遵守 P3P 標準的話,那麼有關它的 Cookies 將被自動拒絕,並且 P3P 還能夠自動識破多種 Cookies 的嵌入方式。P3P 是由全球資訊聯盟網所開發的。
例子
當頁面存在 iframe 時,想要獲取 iframe 框架裏面的 cookie,就要在 iframe 相應的動態頁面裏面添加 P3P Header 信息,否則在 IE 下獲取不到。因為 IE 有安全策略,限制頁面不保存第三方 cookie(注:當前訪問頁面為第一方 cookie,第三方 cookie 就是當前網頁以外的其他網頁的 cookie)。
- <?php
- //http://www.a.com/a_setcookie.php 文件内容:
- setcookie("test", "testval", time()+3600, "/", ".a.com");
- //http://www.a.com/a_getcookie.php 文件内容:
- var_dump($_COOKIE);
- /*-----------------------------------------------------------------------
- http://www.b.com/b_setcookie.php 文件内容:
- <iframe src="http://www.a.com/a_setcookie.php?id=www.b.com"></iframe>
- 通过浏览器访问: http://www.b.com/b_setcookie.php
- http://www.a.com/a_getcookie.php在访问 b.com域后,我们并没有在 a.com域发现设置上cookie值。
- 将http://www.a.com/a_setcookie.php文件内容改为如下:
- --------------------------------------------------------------------------*/
- header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
- setcookie("test","testval", time()+3600, "/", ".a.com");
- //再次访问:http://www.b.com/b_setcookie.php
- //http://www.a.com/a_getcookie.php在访问b.com域后,设置了a.com域的cookie值。
JS 使用 P3P 协议
- xmlhttp.setRequestHeader( "P3P" , 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );
来源: