/ cookie

cookie跨域解决方案

一道面试题,两个网站需要共享用户资料,即某用户浏览的A网站(该用户不一定是该网站的注册用户),A网站收集该用户的一些偏好信息,存储在cookie中,同时希望该用户访问B网站时,B网站也能获取到这个cookie信息。(AB两个网站均可修改代码)

一种答案是利用iframe来传递信息。

A网站在设置好cookie之后,在页面中放置一个长宽均为0的iframe,地址指向B网站的一个页面,并把cookie作为get参数,例如

B网站的test.php页面就可以获取到cookie值,并用setcookie将这个cookie值设置为B站的cookie。

经测试IE浏览器下这样是不行的,需要在http头中加上P3P:

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA div COM NAV OTC NOI DSP COR"');

另一种方案比较神奇,我也是今天才看到的。

发送页:

function CroosMess() { this.name = 处理过的cookie,格式化一种数据形式提交; window.location.href='http://接收页'; }

接收页:

alert(this.name);

this.name数据传输极限为2MB

这个代码居然真的可以实现数据的跨域传输,在IE下也有效。

不过缺点也很明显,任意一个网站都有权限获取到this.name里的数据,不是很安全。

cookie跨域解决方案
Share this