[跨域] -- cookie跨域共享

    xiaoxiao2021-03-26  30

    原文地址: http://www.cnblogs.com/super-d2/p/4719660.html

    PHP使用P3P完成COOKIE跨域操作 实际实用中,类似的需求有,比如说我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是单点登录(SSO)功能。 为了测试的方便,先编辑hosts文件,加入测试域名

    sudo vim /etc/hosts

    192.168.1.112 www.a.com

    192.168.1.112 www.b.com

    代码实现

    www.a.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); 

    ?>

    www.b.com域名下的代码文件: [b_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, "/", ".b.com");

    ?>

    [b_getcookie.php] <?php   var_dump($_COOKIE);  

    ?>

    依次访问 http://www.b.com/b_setcookie.php http://www.a.com/a_getcookie.php 会发现a.com域上已经有cookie值了

    代码分析 在www.b.com的域名下给www.a.com创建cookie。 若用户登录到www.b.com中,由此域名的b_setcookie.html中js实现方式给www.a.com域名设置cookie。 假设www.a.com域名下的a_getcookie.php有cookie则设定www.a.com登录成功。

    b_setcookie.html:

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

    总结P3P的在上述代码中最主要的职责是:

    跨域产生 cookie

    注:上述代码在非IE下测试,即使不发送P3P头信息,也能成功。IE浏览器必需发送P3P才能成功!所以要跨域产生cookie还是有必要发送P3P的,毕竟IE的用户群体还是很大的。

    参考:

    http://my.oschina.net/goal/blog/199978

    转载请注明原文地址: https://ju.6miu.com/read-664294.html

    最新回复(0)