P3P Header解决Cookie跨域的问题_javascript技巧
程序员文章站
2022-05-01 12:18:14
...
P3P
//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 文件内容:
通过浏览器访问: 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值。
xmlhttp.setRequestHeader( "P3P" , 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );
P3P是一種被稱為個人隱私安全平臺項目(the Platform for Privary Preferences)的標準,能夠保護在線隱私權,使Internet衝浪者可以選擇在瀏覽網頁時,是否被第三方收集並利用自己的個人信息。如果一個站點不遵守P3P標準的話,那麼有關它的Cookies將被自動拒絕,並且P3P還能夠自動識破多種Cookies的嵌入方式。P3P是由全球資訊聯盟網所開發的。
例子
當頁面存在iframe時,想要獲取iframe框架裏面的cookie,就要在iframe相應的動態頁面裏面添加P3P Header信息,否則在IE下獲取不到。因為IE有安全策略,限制頁面不保存第三方cookie(注:當前訪問頁面為第一方cookie,第三方cookie就是當前網頁以外的其他網頁的cookie)。
复制代码 代码如下:
//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 文件内容:
通过浏览器访问: 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"' );
推荐阅读
-
基于axios 解决跨域cookie丢失的问题
-
Ajax跨域访问Cookie丢失问题的解决方法
-
基于axios 解决跨域cookie丢失的问题
-
JavaScript 跨域访问的问题和解决过程
-
springboot解决跨域请求带cookie的问题
-
Spring Cloud Gateway 2.x 跨域出现“Multiple CORS header”的问题解决
-
PHP关于IE下的iframe跨域导致session丢失问题解决方法_php技巧
-
PHP关于IE下的iframe跨域导致session丢失问题解决方法_php技巧
-
关于javascript中跨域问题的解决办法分享
-
Webkit的跨域安全问题说明_javascript技巧