cookie跨域問題這個可以說是cookie中一個比較熱門的問題,面試的時候一般很愛聊這方面的問題。 跨域的業(yè)務(wù)需求大概是醬紫:用戶在進行了登錄,希望在也同步進行了登錄。如果是同一個主域比較簡單,可以通過setcookie中的domain參數(shù)進行設(shè)定:例如有x.和xx.,可以通過設(shè)置domain為,從而的所有二級域名都可以共享這一個cookie?;诎踩矫娴脑颍谙旅嬖O(shè)置domain為是無效的。 那么是否真的沒有辦法可以實現(xiàn)這個了呢?這個還是有一些奇巧淫技的,這里介紹一種使用內(nèi)框iframe的方法。 具體思路:在下設(shè)置cookie后,嵌入一個iframe框鏈接的頁面,設(shè)置好頁面cookie后,再嵌入一個的頁面,然后通過parent.parent就可以調(diào)用最外層的的js方法,從而進行跳轉(zhuǎn)或者一些其它的操作。具體代碼示例如下: 假設(shè)有頁面:login.php和callback.php,有頁面synclogin.php 的login.php代碼: <?php $sso = "e589hR6VnO8K1CNQZ4PSP/LWGBhRKE5VckawQwl1TdE8d4Q5E7tW"; setcookie("sso", $sso); ?> login success... <script type="text/javascript"> function jumpTo() { location.href = "http://"; } </script> <iframe src="http:///synclogin.php?sso=<?php echo $sso; ?>"></iframe> 的synclogin.php頁面 <?php setcookie("sso", $_GET["sso"]); ?> <iframe src="http:///callback.php"></iframe> 的callback.php頁面 <script type="text/javascript"> parent.parent.jumpTo(); </script> |
|