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

【web】跨域cookie同步方案

阅读更多

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

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

 

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

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

 

假设下面这样一个场景:

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

 

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


解释如下:

第一步 :用户向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,这是就能成功访问了。

 

 

(全文完)

分享到:
评论
1 楼 gds_fighting 2012-11-09  
谢谢分享,请教一个问题:常用的同步登陆状态方案都有哪些?我能想到的是用分布式缓存,总感觉cookie不安全,希望楼主给解释一下

相关推荐

    java web session跨域共享(redis)

    6. **实现Session监听器**:可以创建一个监听Session的监听器,当Session创建、更新、销毁时,同步这些变化到Redis中,保持Redis中的Session与Web服务器上的Session同步。 7. **安全考虑**:使用Redis存储Session...

    javascript跨域方案总结

    JavaScript跨域方案是Web开发中的一个重要主题,尤其是在构建现代Web应用程序时。由于浏览器的安全策略,JavaScript在不同域名之间默认不允许进行通信,这就是所谓的“同源策略”。然而,开发者经常需要在多个域之间...

    cookie-sync-simulation

    1网页在沙盒1上从nginx获取html和javascript 在网络浏览器上运行JavaScript 访问sandbox-2 nodejs脚本获取沙盒2域Cookie 发出沙盒1域Cookie 将Cookie信息插入网页,并在Web浏览器上显示跨域Cookie同步信息设置本地PC...

    Yii2实现多域名跨域同步登录退出

    由于session的cookie域也被设置为顶级域名,后台(backend)***能够识别到该session,从而实现跨域同步登录。退出操作也是同理,清除顶级域名下的session后,所有二级域名下的登录状态都会被同步清除。 最后,文章...

    跨域共享session (实现http跳转https 共享session)

    1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案,但不适用于需要服务器端存储session的情况,因为它只能用于获取数据,无法设置Cookie。 2. **CORS(Cross-Origin Resource Sharing)**:CORS是...

    Ajax跨域通信解决异步加载及信息同步实操——以石家庄市文献资源平台为例.pdf

    当用户首次打开首页时,由于智立方的搜索引擎和全球产品样本库不提供匿名接口,需要用户手动点击获取登录cookie,这与平台期望的自动登录和信息同步存在冲突。 【解决方案】为了解决这个问题,文章采用了Ajax的异步...

    二级域名和顶级域名需要同步登录如何设置cookie作用域1

    总之,正确设置Cookie的作用域是实现二级域名与顶级域名同步登录的关键步骤。通过在PHP配置文件中调整`cookiedomain`,你可以确保用户在整个网站的各个部分都能保持一致的登录状态,同时要注意保护用户数据的安全。

    跨域点单登录源码SSO_cross_domain

    5. **存储与同步**:IDP和SP之间需要保持用户信息的一致性,可能涉及到数据库的同步或者使用分布式缓存等技术。 在SSO_cross_domain源码中,你可能会发现以下关键技术: - **OAuth2.0** 或 **OpenID Connect**:...

    session跨域的共享--更改配置

    - **兼容性**:不同浏览器对于cookie的处理方式可能有所不同,特别是对于跨域cookie的支持。确保测试你的应用在各种浏览器中的表现。 ### 四、结论 通过调整PHP的配置参数,我们可以有效地实现session的跨域共享,...

    黑马程序员_PHP_课程同步笔记day39:cookie介绍 .docx

    【PHP课程同步笔记day39:Cookie介绍】 在Web开发中,为了跟踪用户在整个会话中的行为,常常需要用到会话跟踪技术...理解并熟练运用Cookie的机制、存储、跨域性和有效期等特性,对于开发高效且安全的Web应用至关重要。

    精易web浏览器支持库视频教程

    第二课 目录结构介绍 调试器打开失败的解决方案。第三课 自定义Cookie 以及 LocalStorage 存放目录。第四课 填表功能的两种模式详解(选择器)。第五课 跨域框架填表。第六课 为什么模拟点击元素无效(事件处理函数详解...

    JS+COOKIE+JSON记录用户浏览过的文章

    同时,考虑到跨域问题和数据持久化,还可以考虑结合现代浏览器提供的Web Storage(LocalStorage和SessionStorage)或利用HTTPOnly Cookie防止JavaScript访问,以及适时地将数据同步到服务器端数据库。

    discuz与java通过cookie共享登陆

    标题“Discuz与Java通过Cookie共享登录”涉及的是在Web开发中如何实现不同系统间用户登录状态的共享,特别是Discuz论坛系统与基于Java的应用之间的交互。Discuz是一款流行的开源社区论坛软件,而Java是一种广泛使用...

    javascript 中Cookie读、写与删除操作.docx

    此外,还可以利用特殊的方法实现跨域同步Cookie: ```javascript // 原页面js里 window.location = "http://anotherwebsite:1234/GetCookie/Index?" + document.cookie; // 另一个网站的脚本 var url = window....

    JWT你必须了解的认证登录方案.docx

    JSON Web Token(JWT)是一种基于JSON格式的开放标准...尽管JWT有其局限性,但它提供了现代Web应用认证的一种有效解决方案,尤其在应对跨域和分布式环境时。开发者应根据具体需求和安全性考虑,选择合适的认证机制。

    03-token和cookie区别.md

    然而,session模式会占用服务器内存资源,当有多个进程或服务器时,同步session会比较复杂。另外,session模式在跨域时有特殊配置要求。 JWT模式则不占用服务器内存,多进程、多服务器部署时也不会受到影响,且没有...

    ASP.NET跨域单点登录的实现(SSO)

    在认证服务器上,用户输入凭证,服务器验证后生成JWT(JSON Web Token)或Cookie作为票据,并返回给客户端。 2. **票据传递**:客户端保存票据,并在后续对WebSite1或WebSite2的请求中携带该票据。服务器端验证票据...

    关于二级域名下使用一级域名下的COOKIE的问题

    这样设置后,无论用户在`www.jb51.net`还是`bbs.jb51.net`下,都能读取到名为`fangbinbin`的Cookie,从而实现跨域登录的同步效果。 然而,需要注意的是,这种方式有一定的安全性和隐私问题。因为一旦允许一级域名的...

Global site tag (gtag.js) - Google Analytics