cookie跨域问题这个可以说是cookie中一个比较热门的问题,面试的时候一般很爱聊这方面的问题。 跨域的业务需求大概是酱紫:用户在进行了登录,希望在也同步进行了登录。如果是同一个主域比较简单,可以通过setcookie中的domain参数进行设定:例如有x.和xx.,可以通过设置domain为,从而的所有二级域名都可以共享这一个cookie。基于安全方面的原因,在下面设置domain为是无效的。 那么是否真的没有办法可以实现这个了呢?这个还是有一些奇巧淫技的,这里介绍一种使用内框iframe的方法。 具体思路:在下设置cookie后,嵌入一个iframe框链接的页面,设置好页面cookie后,再嵌入一个的页面,然后通过parent.parent就可以调用最外层的的js方法,从而进行跳转或者一些其它的操作。具体代码示例如下: 假设有页面: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> |
|