通過設定P3P頭來實現跨域訪問COOKIE – PHP技術

來源:互聯網
上載者:User

 http://www.kingmx.com/article/15061(轉)

網上看了別人介紹的一片文章,說使用P3P可以完成跨域COOKIE操作,感覺很COOL,不過沒有提供原始碼,我胡亂寫了一下,大家看看。

實際工作中,類似這樣的要求很多,比如說,我們有兩個網域名稱,我們想實現在一個網域名稱登入後,能自動完成另一個網域名稱的登入,也就是PASSPORT的功能。

我唯寫一個大概,為了測試的方便,先編輯hosts檔案,加入測試網域名稱(C:/WINDOWS/system32/drivers/etc/hosts)

127.0.0.1       www.a.com
127.0.0.1       www.b.com

首先:建立 a_setcookie.php 檔案,內容如下:

<?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"$_GET['id'], time()+3600, "/", ".a.com"); 
?>

然後:建立 a_getcookie.php 檔案,內容如下:

<?php 
var_dump($_COOKIE
); 
?>
 

最後:建立 b_setcookie.php 檔案,內容如下:

<script src="http://www.a.com/a_setcookie.php?id=www.b.com"></script>

----------------------------

三個檔案建立完畢後,我們通過瀏覽器依次訪問:

http://www.b.com/b_setcookie.php
http://www.a.com/a_getcookie.php

我們會發現,在訪問b.com域的時候,我們並沒有在a.com網域設定上cookie值。

然後我們修改一下a_setcookie.php檔案,去掉注釋符號,a_setcookie.php即為:

<?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", $_GET['id'], time()+3600, "/", ".a.com");  
?> 

再次通過瀏覽器依次訪問:

http://www.b.com/b_setcookie.php
http://www.a.com/a_getcookie.php

這次,你會發現在訪問b.com域的時候,我們設定了a.com域的cookie值。

末了補充一句,似乎只有IE對跨域訪問COOKIE限制比較嚴格,上述代碼在FIREFOX下測試,即使不發送P3P頭資訊,也能成功。不過IE是老大啊。

參考文檔:http://www.w3.org/P3P/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.