我不明白谷歌如何实现单一登录的以下机制:
>我以gmail登录为例(我认为这是通过我的授权创建一个cookie)
>我打开一个新的标签,直接输入“youtube”的URL
>然后我进入youtube登录。
这个第二个网站如何检测到我已经登录。
它们是不同的域。 YouTube无法读取Gmail的Cookie。
我已经阅读过关于单一登录的所有解决方案都不允许这样做。客户端总是要求中央登录应用程序的权限。
在我的例子中,YouTube不知道我是同一个用户登录Gmail(实际上它知道,但我不明白如何)
请注意,我手动输入“youtube”的网址。我不会从gmail的上部工具栏中粘贴youtube图标(在这种情况下,gmail可能通过url传递一些auth参数)。
解决方法
Cookie设置在spesific域上,例如:
setcookie(name,value,expire,path,domain)
当您在Gmail之前登录过Gmail时,您已被重定向到accounts.google.com,然后再转到mail.google.com,以便Cookie位于“accounts.google.com”上
in this case the domain is : accounts.google.com the path is : "/" 'this is the home path
什么时候你要求www.youtube.com,那么你点击它要求的“连接”
accounts.google.com没有您看到这个重定向,并检查您是否在accounts.google.com上有Cookie,如果是这样,它会检查Cookie是否有效并且未被过期,或者未被用户禁止或…然后重定向到accounts.youtube .com /?loginthisSession = Sessionid’此请求计数从accounts.google.com的cookie捕获的sessionid的cookie值
最后一步’acounts.youtube.com’登录您,并在域“accounts.youtube.com”上设置自己的cookie并保存
所以诀窍在302 http重定向