大家肯定很熟悉淘宝,天猫,聚划算,我想问个问题,我在这三个站只要一个站登录了,那么打开其他两个站都已经登录,那么他们这个是怎么实现的啊? 传统比如UC中我们是使用script来处理的,这个我也知道怎么处理,但是我比较感兴趣的是像上面那三个大的网站是怎么同步登录和退出的?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
首先这三个网站的根域名是不一样的,所以cookie无法共享。但每个网站的登录状态无疑都是通过cookie来实现的,所以cookie不能共享就成为问题。这个限制当然是无法突破的。
同步cookie一般有两种常规做法:
1.主动通知型 在A域名登录,会通过jsonp方式请求B域名的接口,此接口接收A域名传来的参数,通过此参数判断用户身份,并种上B域名的cookie,同理,当有B、C等多个域名需要同步cookie时,依次请求接口即可。淘宝和支付宝是这样的一种关系。
2.被动触发型 在A域名登录后,只种A域的cookie,不做其它操作,当用户访问B域名的页面时,B域名会在页面中jsonp一下A域名的校验接口,此时A域名已登录,会返回一些信息参数,B域名的javascript拿到参数后传给B域名的接口判断用户身份,并种上B域名的cookie,这样B域名就同步到了A域名的状态。淘宝和天猫是这样的一种关系。此时A域名相当于一个中心域名,其它域名都通过jsonp它的接口来获取参数并同步登录状态。
至于退出登录,也可以类似原理来做,我想你应该能找到方法。
sso单点登录
jsonp.
顺便建议学学怎么抓包吧。
首先这三个网站的根域名是不一样的,所以cookie无法共享。但每个网站的登录状态无疑都是通过cookie来实现的,所以cookie不能共享就成为问题。这个限制当然是无法突破的。
同步cookie一般有两种常规做法:
1.主动通知型
在A域名登录,会通过jsonp方式请求B域名的接口,此接口接收A域名传来的参数,通过此参数判断用户身份,并种上B域名的cookie,同理,当有B、C等多个域名需要同步cookie时,依次请求接口即可。淘宝和支付宝是这样的一种关系。
2.被动触发型
在A域名登录后,只种A域的cookie,不做其它操作,当用户访问B域名的页面时,B域名会在页面中jsonp一下A域名的校验接口,此时A域名已登录,会返回一些信息参数,B域名的javascript拿到参数后传给B域名的接口判断用户身份,并种上B域名的cookie,这样B域名就同步到了A域名的状态。淘宝和天猫是这样的一种关系。此时A域名相当于一个中心域名,其它域名都通过jsonp它的接口来获取参数并同步登录状态。
至于退出登录,也可以类似原理来做,我想你应该能找到方法。
sso单点登录
jsonp.
顺便建议学学怎么抓包吧。