Php 跨域cookie
我有个小问题 如何为多个域设置cookie 我确实理解安全问题,而且我相信以前也做过。原因是SSO 即Php 跨域cookie,php,authentication,cookies,single-sign-on,Php,Authentication,Cookies,Single Sign On,我有个小问题 如何为多个域设置cookie 我确实理解安全问题,而且我相信以前也做过。原因是SSO 即 account.domain.com需要为以下内容设置已登录的域: domain.com, 域名1.com, 域名2.com 有没有简单的方法,使用PHP和Cookie,或者其他方法?我认为这个解决方案会满足您的需要:“您正在尝试的事情无法完成。(这是一个浏览器安全问题,不是PHP问题。) 除了使用某种形式的非现场身份验证之外,最接近的方法是使cookie可以跨子域访问,在这种情况下,您只需使
account.domain.com
需要为以下内容设置已登录的域:
domain.com,
域名1.com,
域名2.com
有没有简单的方法,使用PHP和Cookie,或者其他方法?我认为这个解决方案会满足您的需要:“您正在尝试的事情无法完成。(这是一个浏览器安全问题,不是PHP问题。)
除了使用某种形式的非现场身份验证之外,最接近的方法是使cookie可以跨子域访问,在这种情况下,您只需使用PHP函数的可选“domain”参数。domain.com绝对无法为domain1.com设置cookie。只有让用户的浏览器向每个域提交请求,然后域将设置自己的cookie,才能解决您试图执行的操作 然后,您需要为每个域提供一种验证用户身份的方法。这有两种方法:
这真的很复杂。我建议你不要自己滚。看看我所描述的PHP实现。这可以通过一个域作为主域,其他域作为从域来实现 假设我们有一个域名accounts.domain.com,它是我们的主人 然后我们有了我们的奴隶
domain.com
,something.com
和other.com
当您登录domain.com时,它实际上是siteaccounts.domain.com
,然后您将获得一个具有唯一ID的浏览器cookie,然后您将被重定向到domain.com的登录后登录登录页面(即domain.com/logon?check=true&unique ID=&request ID=
)。登录页将联系accounts.domain.com
,使用浏览器ID查询。如果事务正常,则您将从domain.com
获取登录cookie
接下来,在每个域(domain.com
,something.com
和other.com
)上,将初始重定向到accounts.domain.com/roaming check?返回url=
。因为我们要回家了(我们已经登录了accounts.domain.com
),我们将在登录页(.com/logon?check=true&unique id=&request id=
)上再次被重定向,从这一点来看,它与登录的部分相同。我们无缝地漫游到另一个域(用户不知道它,因为浏览器通常不会显示重定向页面,直到它通过标题发送(服务器)/接收(浏览器)部分)
如果事实上没有活动登录,该站点将把这个“负面登录”保存到会话中,不再尝试检查登录(直到我们尝试登录或加载另一个域)。下面是关于stackoverflow的另一篇文章,展示facebook是如何做到这一点的,是的,使用iFrame和javascript是可能的。这是另一种方法,让domain.com连接domain1.com并获取令牌,然后在JS调用的头中传递该令牌,或者作为单独的字段,然后domain1.com应该检查该令牌并相应地响应。这有意义吗?