最近因为项目,需要了解在不同的域名下,同步登陆状态等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,这是就能成功访问了。
(全文完)
分享到:
相关推荐
6. **实现Session监听器**:可以创建一个监听Session的监听器,当Session创建、更新、销毁时,同步这些变化到Redis中,保持Redis中的Session与Web服务器上的Session同步。 7. **安全考虑**:使用Redis存储Session...
JavaScript跨域方案是Web开发中的一个重要主题,尤其是在构建现代Web应用程序时。由于浏览器的安全策略,JavaScript在不同域名之间默认不允许进行通信,这就是所谓的“同源策略”。然而,开发者经常需要在多个域之间...
1网页在沙盒1上从nginx获取html和javascript 在网络浏览器上运行JavaScript 访问sandbox-2 nodejs脚本获取沙盒2域Cookie 发出沙盒1域Cookie 将Cookie信息插入网页,并在Web浏览器上显示跨域Cookie同步信息设置本地PC...
由于session的cookie域也被设置为顶级域名,后台(backend)***能够识别到该session,从而实现跨域同步登录。退出操作也是同理,清除顶级域名下的session后,所有二级域名下的登录状态都会被同步清除。 最后,文章...
1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案,但不适用于需要服务器端存储session的情况,因为它只能用于获取数据,无法设置Cookie。 2. **CORS(Cross-Origin Resource Sharing)**:CORS是...
当用户首次打开首页时,由于智立方的搜索引擎和全球产品样本库不提供匿名接口,需要用户手动点击获取登录cookie,这与平台期望的自动登录和信息同步存在冲突。 【解决方案】为了解决这个问题,文章采用了Ajax的异步...
总之,正确设置Cookie的作用域是实现二级域名与顶级域名同步登录的关键步骤。通过在PHP配置文件中调整`cookiedomain`,你可以确保用户在整个网站的各个部分都能保持一致的登录状态,同时要注意保护用户数据的安全。
5. **存储与同步**:IDP和SP之间需要保持用户信息的一致性,可能涉及到数据库的同步或者使用分布式缓存等技术。 在SSO_cross_domain源码中,你可能会发现以下关键技术: - **OAuth2.0** 或 **OpenID Connect**:...
- **兼容性**:不同浏览器对于cookie的处理方式可能有所不同,特别是对于跨域cookie的支持。确保测试你的应用在各种浏览器中的表现。 ### 四、结论 通过调整PHP的配置参数,我们可以有效地实现session的跨域共享,...
【PHP课程同步笔记day39:Cookie介绍】 在Web开发中,为了跟踪用户在整个会话中的行为,常常需要用到会话跟踪技术...理解并熟练运用Cookie的机制、存储、跨域性和有效期等特性,对于开发高效且安全的Web应用至关重要。
第二课 目录结构介绍 调试器打开失败的解决方案。第三课 自定义Cookie 以及 LocalStorage 存放目录。第四课 填表功能的两种模式详解(选择器)。第五课 跨域框架填表。第六课 为什么模拟点击元素无效(事件处理函数详解...
同时,考虑到跨域问题和数据持久化,还可以考虑结合现代浏览器提供的Web Storage(LocalStorage和SessionStorage)或利用HTTPOnly Cookie防止JavaScript访问,以及适时地将数据同步到服务器端数据库。
标题“Discuz与Java通过Cookie共享登录”涉及的是在Web开发中如何实现不同系统间用户登录状态的共享,特别是Discuz论坛系统与基于Java的应用之间的交互。Discuz是一款流行的开源社区论坛软件,而Java是一种广泛使用...
此外,还可以利用特殊的方法实现跨域同步Cookie: ```javascript // 原页面js里 window.location = "http://anotherwebsite:1234/GetCookie/Index?" + document.cookie; // 另一个网站的脚本 var url = window....
JSON Web Token(JWT)是一种基于JSON格式的开放标准...尽管JWT有其局限性,但它提供了现代Web应用认证的一种有效解决方案,尤其在应对跨域和分布式环境时。开发者应根据具体需求和安全性考虑,选择合适的认证机制。
然而,session模式会占用服务器内存资源,当有多个进程或服务器时,同步session会比较复杂。另外,session模式在跨域时有特殊配置要求。 JWT模式则不占用服务器内存,多进程、多服务器部署时也不会受到影响,且没有...
在认证服务器上,用户输入凭证,服务器验证后生成JWT(JSON Web Token)或Cookie作为票据,并返回给客户端。 2. **票据传递**:客户端保存票据,并在后续对WebSite1或WebSite2的请求中携带该票据。服务器端验证票据...
这样设置后,无论用户在`www.jb51.net`还是`bbs.jb51.net`下,都能读取到名为`fangbinbin`的Cookie,从而实现跨域登录的同步效果。 然而,需要注意的是,这种方式有一定的安全性和隐私问题。因为一旦允许一级域名的...