美文网首页PHP进阶
[php]借助P3P完成COOKIE跨域操作的方法

[php]借助P3P完成COOKIE跨域操作的方法

作者: dejan | 来源:发表于2017-10-12 11:02 被阅读0次

    在实际应用中,类似的需求有,比如说我们有两个域名,想实现在一个域名登录后,能自动完成另一个域名的登录,也就是单点登录(SSO)功能。

    为测试方便,先编辑hosts文件,加入测试域名(C:\WINDOWS\system32\drivers\etc\hosts)

    127.0.0.1  www.a.com
    127.0.0.1  www.b.com
    

    Apache vhost配置

    <virtualhost *:80>
        ServerName    www.a.com
        DocumentRoot  F:\WWW\a
    </virtualhost>
    <virtualhost *:80>
        ServerName    www.b.com
        DocumentRoot  F:\WWW\b
    </virtualhost>
    

    首先,在 F:\WWW\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");
    

    然后,同上在 F:\WWW\a 目录下创建 index.php 文件:

    <?php  
    var_dump($_COOKIE);
    

    最后,在 F:\WWW\b 目录下创建 index.php 文件:

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

    三个文件创建完毕后,通过浏览器依次访问:

    http://www.b.com/
    http://www.a.com/
    

    在访问www.b.com域时,并没有在www.a.com域设置上cookie值。
    然后,修改一下setcookie.php文件去掉header前的注释符号,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/
    http://www.a.com/
    

    看看是不是已经实践跨域的访问了。

    相关文章

      网友评论

        本文标题:[php]借助P3P完成COOKIE跨域操作的方法

        本文链接:https://www.haomeiwen.com/subject/zxenyxtx.html