cookie完全跨域

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,验证了cookie是不能跨域的,即使最终的服务端是一起的也不可以跨越。所以在JavaScript中,无法直接通过设置cookie来实现跨域存取。这是由浏览器的同源策略所限制的。同源策略要求两个网页的协议、域名和端口号必须完全相同,否则就会被认为是跨域请求。 如果需要在不同域名之间进行跨域存取cookie,可以考虑以下解决方案: 1. 使用服务器端代理:通过在同一域名下的服务器端设置代理,将跨域请求转发到目标域名,然后在目标域名上进行cookie的存取操作。 2. 使用跨域资源共享(CORS):在目标域名的服务器端设置响应头,允许来自其他域名的请求访问,并在JavaScript中发送跨域请求,通过服务器端的设置来实现cookie的存取。 需要注意的是,以上解决方案都需要在服务器端进行相应的配置和处理,以确保安全性和合法性。同时,还需要注意浏览器的兼容性和对CORS的支持情况。 如果你有具体的代码需求,可以参考引用\[3\]中的示例代码,其中包含了设置和获取cookie的示例。 #### 引用[.reference_title] - *1* *2* *3* [Cookie详解与跨域问题](https://blog.csdn.net/weixin_40482816/article/details/114140909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值