欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【web】跨域cookie同步方案

程序员文章站 2022-06-08 20:31:41
...

最近因为项目,需要了解在不同的域名下,同步登陆状态等cookie。

于是兄弟公司那了解了一种跨域同步cookie的方案。

 

场景: 有时一个公司可能有多个不同域名的网站,比如sina.com和weibo.cn,比如taobao.com和tmall.com。

这些网站背后很多是同一套会员体系。由于http协议规定cookie是跟着域名走的,这时就需要在不同的域名下同步登陆状态,避免出现用户体验上出现需要二次登陆验证的情况。

 

假设下面这样一个场景:

用户在 bbb.com上已经登陆,现在要去aaa.com上玩,在aaa.com域名下暂未登录。需要访问的aaa.com/resource.html资源需 要登录才能访问。两个网站是同一套会员体系,同一个公司的。这是要让用户体验上做到用户在aaa.com上玩也能识别出登录状态。

 

以上面场景为例,下面画了个实现跨域同步简单流程图:


【web】跨域cookie同步方案
            
    
    博客分类: http、web相关 webcookie跨域同步 

解释如下:

第一步 :用户向aaa.com发起get请求,获取resource.html资源,aaa.com发现用户未登录,返回302状态和外部重定向url:

j.bbb.com?target=www.aaa.com/resource.html

注意j.bbb.com子域名上部署的应用可以认为是专门用了跨域同步。

第二步 :用户根据重定向url,访问j.bbb.com?target=www.aaa.com/resource.html,由于在bbb.com上已经登 录,所以bbb.com上能拿到从client端传递过来cookie信息。子域j.bbb.com上的应用负责将cookie读取出来,并作为参数再次 重定向到

 

p.aaa.com?tartet=www.aaa.com/resource.html&sessionid=xxx&loginId=xxx&……

 第三步 :用户根据第二步重定向url,访问p.aaa.com。p.aaa.com子域名上的应用专门负责根据请求参数里的参数对,往aaa.com域写入cookie,并重定向到用户第一步请求的url。

第四步 :经过前三步,已经完成了再aaa.com域名下同步bbb.com的登录状态,用户再次请求aaa.com/resource.html,这是就能成功访问了。

 

 

(全文完)