P3P Header解決Cookie跨域的問題
P3P
P3P是一種被稱為個人隱私安全平臺項目(the Platform for Privary Preferences)的標(biāo)準(zhǔn),能夠保護(hù)在線隱私權(quán),使Internet衝浪者可以選擇在瀏覽網(wǎng)頁時,是否被第三方收集並利用自己的個人信息。如果一個站點不遵守P3P標(biāo)準(zhǔn)的話,那麼有關(guān)它的Cookies將被自動拒絕,並且P3P還能夠自動識破多種Cookies的嵌入方式。P3P是由全球資訊聯(lián)盟網(wǎng)所開發(fā)的。
例子
當(dāng)頁面存在iframe時,想要獲取iframe框架裏面的cookie,就要在iframe相應(yīng)的動態(tài)頁面裏面添加P3P Header信息,否則在IE下獲取不到。因為IE有安全策略,限制頁面不保存第三方cookie(注:當(dāng)前訪問頁面為第一方cookie,第三方cookie就是當(dāng)前網(wǎng)頁以外的其他網(wǎng)頁的cookie)。
<?php
//http://www.a.com/a_setcookie.php 文件內(nèi)容:
setcookie("test", "testval", time()+3600, "/", ".a.com");
//http://www.a.com/a_getcookie.php 文件內(nèi)容:
var_dump($_COOKIE);
/*-----------------------------------------------------------------------
http://www.b.com/b_setcookie.php 文件內(nèi)容:
<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域發(fā)現(xiàn)設(shè)置上cookie值。
將http://www.a.com/a_setcookie.php文件內(nèi)容改為如下:
--------------------------------------------------------------------------*/
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域后,設(shè)置了a.com域的cookie值。
JS使用P3P協(xié)議
xmlhttp.setRequestHeader( "P3P" , 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );
相關(guān)文章
讓getElementsByName適應(yīng)IE和firefox的方法
讓getElementsByName適應(yīng)IE和firefox的方法...2007-09-09JavaScript懶加載與預(yù)加載原理與實現(xiàn)詳解
這篇文章主要介紹了JavaScript懶加載與預(yù)加載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09bootstrap可編輯下拉框jquery.editable-select
這篇文章主要介紹了bootstrap可編輯下拉框jquery.editable-select的相關(guān)資料,需要的朋友可以參考下2017-10-10