`
hwy1782
  • 浏览: 150378 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

cookie跨域问题

 
阅读更多

今天有时间,看了一下cookie跨域问题。总结一下

问题引入:淘宝公司有两个域名:taobao.com 和 tmall.com。但是淘宝和tmall共用一套会员体系,因此就存在跨域访问的问题。某用户在taobao.com下登录后(此时taobao域下的cookie中会保存该用户已经登录的信息),然后该用户访问tmall.com,但是由于跨域cookie不能访问的问题。会导致用户在tmall域下需要重新登录。淘宝是如何解决这个问题的呢?具体描述参见:淘宝如何跨域获取Cookie分析 。

 

淘宝如何跨域获取Cookie分析 一文中分析了淘宝如何保持不同域下cookie的一致性。在tmall.com加载的时候,发送一个ajax请求。通过jsonp的方式获取taobao域下公用的cookie。然后通过js将这些公用的cookie设置到tmall域下。解决了cookie不能公用的问题。

 

下面对其中使用的一些技术做一些解释。

 

1.同源策略

所谓:同源策略(同源指域名、协议、端口相同,一个著名的安全策略),一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTML的<script>元素是一个例外。利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的JSON资料,而这种使用模式就是所谓的JSONP。

 

2.JSONP

JSONP(JSON with Padding)是资料格式JSON的一种“使用模式”,可以让网页从别的网域要资料。另一个解决这个万恶他的方式是跨来源资料共享。

关于JSONP的一个详细介绍参见关于JSONP》《javascript(jquery getJSON) 跨域的操作(Jsonp和java操作例子)》一文中详细描述了javascript跨域操作的方法。

 

3.关于js回调函数:

《js回调函数(callback)》一文详细描述了js回调函数的意义:

js中callback的解释如下: 写道
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

 

4.js设置cookie的方法

参见《javascript 设置cookie》一文。

 

ps:

《通过设置P3P解决跨域不能设置cookie的问题》一文描述了跨域设置cookie的问题,这其中要注意的点:这里的跨域设置cookie是指:

所谓的cookie跨域,并不是taobao.com试图去设置tmall.com的cookie,而是taobao.com试图去设置taobao.com的cookie,但是这个过程是在一个tmall.com的域里进行的。

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics