posts - 0, comments - 2, trackbacks - 0, articles - 25
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

cookie完全跨域

Posted on 2010-12-16 15:43  蜗牛向上爬  阅读(...)  评论(...编辑  收藏

  cookie是用来在某一个域下使用的,比如在.baidu.com这个域下种一个cookie,那么.google.com这个域就不能使用它; 这是浏览器出于对用户隐私保护的考虑。要实现跨域的一个思路就是:客户端浏览器对某些html标签(比如script、iframe)的src没有进行跨 域限制,用它们以GET方式夹带本域种的cookie值动态请求外域的程序,这个外域的程序来种植该域的值为GET参数传过去的cookie,从而达到互 通的目的。例如:
  最近上线的家天下单点登录首页里有一个员工论坛的链接,而员工论坛部署在.soufun.com域名下。为了实现在家天下单点登录首页可以直接进入员工论坛。我们的做法是:在家天下单 点首页加载完后,利用js在页面动态添加一个script标签,向搜房的单点的接口发请求,验证通过后设置.soufun.com域的cookie。就有 了.soufun.com域下的cookie,论坛就可以直接进入了。

      这样的做法就是所谓的“jsonp”,用iframe也可以实现同样的效果。但是iframe存在很多浏览器兼容问题,个人认为还是用jsonp更省事。

      经过实际使用发现Firefox、chrome等不用P3P也可以跨域,但是IE必须用加P3P的头信息才可以跨域。看来IE对跨域的限制更为严格!所以要想实现完全跨域,还是加上下面这句头信息比较好:)
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA div COM NAV OTC NOI DSP COR"');

但是网上有人说P3P有安全隐患,我没有搜到具体原因和更好的解决方案。

参考资料:http://xiaolele.javaeye.com/blog/666434