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

在实际应用中,类似的需求有,比如说我们有两个域名,想实现在一个域名登录后,能自动完成另一个域名的登录,也就是单点登录(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:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,197评论 2 38
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,775评论 0 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 一、会话控制(session与cookie) 1.cookie简介 Cookie是存储在客户端浏览器中的数据,我们...
    空谷悠阅读 650评论 0 5
  • 2017-06-20 星期二晴 【日记星球之原创第84篇】 你看会或不看,我都在写,你写或不写,时间都在流逝,唯...
    瑜馨私教瑜伽張盈伽阅读 397评论 2 2