1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP不同域名cookie共享(单点登录实现原理)

PHP不同域名cookie共享(单点登录实现原理)

时间:2024-07-20 04:22:48

相关推荐

PHP不同域名cookie共享(单点登录实现原理)

PHP使用P3P完成COOKIE跨域操作

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

为了测试的方便,先编辑hosts文件,加入测试域名

sudo vim /etc/hosts

192.168.1.112

192.168.1.112

代码实现

域名下的代码文件:[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_getcookie.php]

<?php

var_dump($_COOKIE);

?>

域名下的代码文件:[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_getcookie.php]

<?php

var_dump($_COOKIE);

?>

依次访问

/b_setcookie.php

/a_getcookie.php

会发现域上已经有cookie值了

代码分析

在的域名下给创建cookie。

若用户登录到中,由此域名的b_setcookie.html中js实现方式给域名设置cookie。

假设域名下的a_getcookie.php有cookie则设定登录成功。

b_setcookie.html:

<script src="/a_setcookie.php?id="></script>

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

跨域产生 cookie

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

参考:

/goal/blog/199978

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。