`

通过P3P协议,实现跨域set cookie,解决同域IFRAME中SESSION传递失效问题

 
阅读更多

在之前的项目中,遇到这个一个问题,实现跨域跨服务器间进行通信.虽然在之前简老师有和我说过通行证的原理,因为没有进行过实际的操作,也没有太大的把握可以通过通行证的方式实现这个需求.上网找了一下资料,发现有P3P的这个协议,它的定义是:

P3P是万维网联盟(W3C)公布的一项隐私保护推荐标准,旨在为网上冲浪的Internet用户提供隐私保护。现在有越来越多的网站在消费者访问时,都会收集一些用户信息。制定P3P标准的出发点就是为了减轻消费者因网站收集个人信息所引发的对于隐私权可能受到侵犯的忧虑。P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然后决定是否接受cookie或是否使用该网站。

最后我决定用跨域设置cookie实现这一需求.

首先我们假设有A站(www.aaa.com)和B站(www.bbb.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”‘);

$cookie_name=$_GET['name'];

$cookie_value=$_GET['value'];

setcookie($cookie_name, $cookie_value,time()+3600);

?>

接下来我们在B站下新建一个文件叫b_setcookie.php的文件,代码如下:

<?php

<script src=”http://www.aaa.com/setcookie.php?name=test&value=bbb.com”></script>

?>

好,现在我们在A站下再新建一个文件叫getcookie.php的文件,代码如下:

<?php

echo ‘<pre>’;

print_r($_COOKIE);

?>

现在我们先在浏览器访问B站的b_setcookie.php文件,然后再访问A站的getcookie.php文件,看是否会打印相应的cookie值出来.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics