PHP不同域名cookie共享(单点登录实现原理)
2017-07-25 14:00
453 查看
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:
总结P3P的在上述代码中最主要的职责是:
跨域产生 cookie
注:上述代码在非IE下测试,即使不发送P3P头信息,也能成功。IE浏览器必需发送P3P才能成功!所以要跨域产生cookie还是有必要发送P3P的,毕竟IE的用户群体还是很大的。
参考:
http://my.oschina.net/goal/blog/199978
实际实用中,类似的需求有,比如说我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是单点登录(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
相关文章推荐
- PHP不同域名cookie共享(单点登录实现原理)
- laravel 实现不同域名cookie共享 一个域名下登录 另一个域名下保持登录状态
- php实现单点登录,顶级域名与子域名间共享Cookie实现单点登录原理。
- php使用cookie实现记住登录状态
- PHP自动登录的实现和Cookie的安全性(UCHome的实现方法)
- php cookie的操作实现代码(登录)
- php两域名实现单点登录
- php实现session多域名多服务器共享session_id
- php 中 cookie 夸二级域名测试 共享数据
- 利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
- 扫二维码登录实现原理,php版
- PHP通过session id 实现session共享和登录验证的代码
- php+ajax+P3P实现多域名跨域登录
- PHP通过session id 实现session共享和登录验证的代码
- JavaScriptCookie&PHPCookie实现用户登录信息自动填入
- 浏览器三种刷新方式的缓存机制-----单点登录SSO的实现原理---PHP版单点登陆实现方案
- 关于同一域名下的不同的二级域名可以共享cookie在thinkphp里的解决办法
- PHP实现第三方登录的原理和实现过程
- 同一TOMCAT下不同WEB工程之间实现SESSION共享的办法,可用来处理单点登录。