[php]如何讓cookie實現跨域問題的原始碼例項

lankecms發表於2016-04-15

首先:建立 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頭資訊,也能成功。

相關文章