IE下的跨域名cookie
Submitted by yourfar on Fri, 04/11/2008 - 17:30.
IE下的跨域名cookie
本文按署名·非商业用途·保持一致授权
作者: surfchen@gmail.com ,发表于2006年03月24日00时31分
很久以前写过一篇文章,叫IE下无法利用iframe进行跨域名传递cookie。那时候说要给出解决方法的,结果因为太忙,忘记了。其实这个解决方法和我所用的iframe传递方法原理是一样的,只是把iframe改成了页面跳转。
我简单写一下方法,我用PHP作为示例语言。
域名一:surfchen.wz
Url:http://surfchen.wz/t1.php
代码:
<?php$cookie_data=array('n1'=>'v1','n2'=>'v2');//cookie测试数据$hash=md5(serialize($cookie_data));//用来作为保存cookie 数据的文件名$data=base64_encode(serialize($cookie_data));//要保存的cookie数据$h=fopen($hash,"wb+");fwrite($h,$data);foreach ($cookie_data as $k => $v){ setcookie($k,$v);}?><script type="text/javascript"><!--location.href="http://surfchen.pp/r1.php?hash=<?php echo $hash?>"//--></script>
域名二:surfchen.pp
Url:http://surfchen.pp/r1.php
代码:
<?phpforeach (unserialize(base64_decode(file_get_contents("http://surfchen.pp/".$_GET['hash']))) as $k => $v){ setcookie($k,$v);}?>
过程是这样的:
http://surfchen.wz/t1.php 这个页面setcookie,并把cookie数据写入一个文件,然后跳转到http://surfchen.pp/r1.php,r1.php的url里带一个参数,根据这个参数获取http://surfchen.wz/t1.php刚才所保存的cookie数据的地址并读取其中的数据,接着setcookie。
这个和MS的passport原理是一样的,也就是在域A注册cookie后,把cookie数据保存到文件或数据库里,然后跳传到域B,并传递一个参数过去,以便根据这个参数获得cookie数据所在位置。最后在域B根据这个参数所获得的cookie数据文件读取数据,并注册cookie到该域下。
- yourfar's blog
- Login or register to post comments