二级域名相同的项目,iframe跨域登录cookies共享问题

场景描述

项目中有一个场景,A项目的域名为:a.xxx.xxx.abc.com(五级域名),B项目的域名为b.xxx.abc.com(四级域名),它们的【二级域名】是一样的。其中,A项目中,通过iframe嵌套了B项目的域名。此时想要在A项目的iframe访问B项目时,不需要登录(A项目代码登录),登录后,在cookies中设置token,以此让A项目中打开B项目网页时可以免登录。

方案

在A项目中登录成功后,A项目调用B项目的接口进行登录,登录后通过在【二级域名】设置token的方式,进行cookies的共享。如下代码,access-token设置token,domain设置【二级域名】

document.cookie="access-token=你的token;domain=abc.com"

设置后,在浏览器中,F12,可以看到cookies中,会有Domain为【abc.com】的token值,此时,可以看到程序可以免登录了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSO (Single Sign-On) 单点登录是指在访问多个系统或应用程序时,用户只需登录一次就可以访问所有的系统,而无需再次输入用户名和密码。基于cookie二级域名跨域共享是指在跨域访问的情况下,通过设置cookie的域名和路径,使得不同域名下的系统能够共享登录状态。 具体来说,当用户成功登录一个系统后,该系统会生成一个包含用户登录状态的cookie,并设置该cookie的域名为当前系统的二级域名。然后,该cookie会被发送给浏览器保存,在用户访问其他系统时,浏览器会自动通过cookie将用户的登录状态传递给其他系统。 为了实现跨域共享,所有需要实现SSO的系统的二级域名需要设置为相同的根域名。例如,系统A的域名为a.example.com,系统B的域名为b.example.com,则它们的根域名为example.com。为了在这两个系统之间实现跨域共享,可以将cookie的域名设置为.example.com,这样两个系统就可以共享同一个cookie。 当用户访问系统A时,系统A会检查是否存在含有登录状态的cookie,如果存在则表示用户已经登录,可以直接访问系统A的资源。如果用户访问系统B,系统B也会检查是否存在含有登录状态的cookie,如果存在则表示用户已经登录,可以直接访问系统B的资源。 通过基于cookie二级域名跨域共享的方式,SSO单点登录实现了用户在不同系统间的无缝登录体验,提高了用户的使用便捷性和系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值