概述
如果我们在本机电脑上启动了 QQ,再使用浏览器访问 QQ 邮箱登录页,这个页面会提示我们已经登录了的 QQ。
它是怎么做到的呢?
有人说是控件。控件也许能够实现,但会影响用户体验,QQ 用的是更先进的思路。
QQ 会内置一个小型的 Web Server,提供类似 IIS、Apache 的功能。
访问 QQ 邮箱登录页,这个网页会去访问这个 Web Server,由于是同一台机子访问,所以地址就是:127.0.0.1(实际是 https://localhost.ptlogin2.qq.com:4301/,这个域名指向的是 127.0.0.1,用域名的好处是可以解决 Cookie 跨域等权限问题。),由于这个 Web Server 是 QQ 建立的,所以 QQ 可以根据自己的登录状况给访问者返回对应的信息。
(要验证以上信息:可以用 Chrome 访问 QQ 邮箱登录页,然后按 F12,切换到 Network 标签,从列表中找到 pt_get_uins 开头的,鼠标移上去就可以看到全网址。)
完了?
显然没那么简单,那我的网页也去访问一下,且不是也获取了用户的登录信息和登录凭据?我拿到这个登录凭据是不是我也可以冒名登录?
所以这里面既要防止他人获取我是否已经登录了这种隐私,还要防止他人获取登录凭据。
所以这就要 QQ 邮箱服务器配合,比如可以这样做:先访问邮箱服务器,邮箱服务器产生一个真随机数,比如 123,并存起来,并将 123 交给浏览器。
浏览器拿到 123 后用这个去访问 127.0.0.1 服务。
127.0.0.1 凭 123 向邮箱服务器询问,123 是否有效?
邮箱服务器说 123 有效,并产生一个凭据 abc,并存起来,并将 abc 交给 127.0.0.1。
127.0.0.1 将 abc 反馈给浏览器,浏览器再凭 abc 去邮箱服务器登录。
为防数据窃听,传输全部是 HTTPS。以上只是一种方式,实际可能是其他方式,也可能更复杂。
最后
以上就是开心楼房为你收集整理的android 仿qq单点登录,QQ 的快速登录原理(BS、CS 混合的单点登录)的全部内容,希望文章能够帮你解决android 仿qq单点登录,QQ 的快速登录原理(BS、CS 混合的单点登录)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复