Php 在一个域上与附加域共享cookie创建

Php 在一个域上与附加域共享cookie创建,php,cookies,Php,Cookies,我有一个设置了cookie的域:myDomain.com 我的问题是,我需要从我的子域访问相同的cookie,该子域物理上位于同一服务器中,但作为域/附加域分开 所以,我有myDomain.com=Main Domain 和myAdonDomain.com=附加域 是否有一个cookie可以由双方共享?是的,只要你知道如何访问它。。。你可以从任何地方访问它。Facebook和各种广告服务使用这些cookies来跟踪你和你的行为,以针对专门为你跟踪的广告 如果是子域,则可以共享cookie(或my

我有一个设置了cookie的域:myDomain.com

我的问题是,我需要从我的子域访问相同的cookie,该子域物理上位于同一服务器中,但作为域/附加域分开

所以,我有myDomain.com=Main Domain

和myAdonDomain.com=附加域


是否有一个cookie可以由双方共享?

是的,只要你知道如何访问它。。。你可以从任何地方访问它。Facebook和各种广告服务使用这些cookies来跟踪你和你的行为,以针对专门为你跟踪的广告


如果是子域,则可以共享cookie(或mydomain.com和IMissWhitney.mydomain.com)。如果它们是不同的域,则无法共享cookie

编辑: linuxeasy是对的,文档有点离题和陈旧,所以这里有一个2011年的新链接,特别是关于PHP的+1 linuxeasy


不,这是不可能的,浏览器不允许这样做

若要实现这一点,请在服务器端执行此操作

对一个网站进行检查,检查会话是否可在其他网站上使用,如果是,则采取相应措施

注意:您不能与主域共享子域cookie。浏览器将它们视为不同的。这与co.in可以访问mysite.co.in的所有cookies和sessions的情况相同(这是不允许的)

编辑(对于SSO上的alexC)

  • SSO实现不需要在任何地方都有cookie
让我们举一个例子:

  • 谷歌有一个SSO服务器,它在上面管理用户的会话。(名称为sso.google.com虚拟名称)

  • 当我们打开Gmail时(第一次)

  • Gmail最初没有设置会话cookies(即使用户已经登录到其他谷歌服务,如plus.google.com或orkut.com)

  • 因此,Gmail站点将用户重定向到sso

  • 在这里,如果用户已登录,则cookies已设置,因此此服务器将识别其用户。如果用户未登录,则会向用户显示一个登录页面,用户通过该页面登录。用户登录到sso.google.com,而不是gmail.com

  • 然后,sso.google.com使用包含会话令牌(随机生成的唯一会话标识符字符串)的Cookie或GET变量将用户重定向到gmail.com

  • 然后Gmail将该会话令牌存储在其自己的会话中。因此,在每次进一步单击时,将使用sso.google.com对该会话令牌进行内部检查,以确定会话是否仍然有效,如果是,则页面是服务器还是其他,用户将再次重定向到sso站点

  • 这同样适用于任何其他谷歌产品。这就是跨多个产品进行会话管理的方式。此模型主要在基于SaaS的应用程序中实现,其中产品有多个租户

  • 正如您所看到的,在所有这一切中都不需要cookie。而且,即使完全依赖cookie,用户从一个应用程序注销时也不会通知当前应用程序,因此会出现完整性和安全性问题


希望这能澄清SSO实现方面的问题。

是在子域上还是完全不同的域上?(例如subdomain.mydomain.com和mydomain.com或myotherdomain.com和mydomain.com)这是不可能的。用户浏览器将阻止共享此cookie。如果存在不同的域,请签出此问题子域无法共享cookie!这就像说-->com可以与google.com、yahoo.com共享其所有cookie一样。我已经在大约9个域上这样做了。这是可行的。它需要一些服务器设置和正确的编码,但你可以分享。什么样的服务器设置和编码?我现在正在使用iPod,所以我到办公室后会反应更好,但这里有另一个例子,你提到的文档大约有15年历史。我认为这也不可能!它们使用的是在父站点上运行的JavaScript库(即google.com正在读取google cookie)。我不知道这是否对Satch起作用。不,这不是一个正确的比较,co.in不是一个域,它是一个根。当然,东西不能在一个根目录下共享,但是如果你看看谷歌新的隐私政策,它说它在所有的域上都有一个cookie。谷歌使用了一个叫做SSO(单点登录)的概念!SSO在内部是一个不同的服务器,它本身负责会话管理,所有其他站点都会在内部调用plus.google.com、orkut.com、google.com来验证用户。它不是由浏览器完成的。把你的概念弄清楚!我的概念很清楚,我已经在web和非web环境中实现了SSO。SSO可以进行会话管理,但它只涉及身份验证方法。在web环境中,除了Cookie之外,SSO无法在关闭浏览器后跟踪会话。他们没有MAC地址,有些浏览器如Opera也不支持NTLM,所以他们必须跟踪你cookies@AlexC更新了我的答案。而且不需要知道mac或跨域共享cookie。