【问题标题】:Sharing a cookie create on one domain with an addon domain与插件域共享在一个域上创建的 cookie
【发布时间】:2012-02-13 13:12:15
【问题描述】:

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

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

所以,我有 myDomain.com = 主域

和 myAdonDomain.com = 插件域

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

【问题讨论】:

  • 它是在子域上还是在完全不同的域上? (例如 subdomain.mydomain.com 和 mydomain.com 或 myotherdomain.com 和 mydomain.com)
  • 不可能。用户浏览器会阻止共享此 cookie。
  • 如果有不同的域,检查这个问题stackoverflow.com/questions/4906907/…

标签: php cookies


【解决方案1】:

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

read

【讨论】:

  • 这些使用在父站点上运行的 JavaScript 库(即 google.com 正在读取 google cookie)。我不知道这是否对 Satch 起作用。
【解决方案2】:

不,不可能,浏览器不允许。

如果您想实现这一点,请在服务器端执行此操作。

让一个网站检查该会话是否在其他网站上可用,如果是,则采取相应措施。

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

编辑(用于 SSO 上的 alexC)

  • SSO 实施不需要在任何地方都有 cookie。

举个例子:

  • Google 有一个 SSO 服务器,它在其上进行用户会话管理。 (让名称是 sso.google.com 虚拟名称)

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

  • Gmail 最初没有为其设置会话 cookie(即使用户已登录到其他 google 服务,例如 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 实施方面的问题。

【讨论】:

  • 不,这不是一个正确的比较,co.in 不是域,它是根。当然,不能跨根共享,但如果您查看 Google 的新隐私政策,它会说它在所有域中都有一个 cookie。
  • Google 使用了一个叫做 SSO(单点登录)的概念! SSO 在内部是一个不同的服务器,它本身进行会话管理,所有其他站点都说 plus.google.com、orkut.com、google.com 在内部调用此 SSO 站点并验证用户。它不是由浏览器完成的。弄清楚你的概念!
  • 我的概念很清楚,我已经在 Web 和非 Web 环境中实现了 SSO。 SSO 可以做会话管理,但它只指身份验证方法。在 Web 环境中,除了 cookie 之外,SSO 无法在您关闭浏览器后跟踪会话。他们没有获取 MAC 地址,并且像 Opera 这样的一些浏览器不支持 NTLM,所以他们必须通过 cookie 跟踪您
  • @AlexC 更新了我的答案。并且不需要知道 mac 或跨域共享 cookie。
【解决方案3】:

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

编辑: linuxeasy 是对的,文档有点离题而且陈旧,所以这里有一个 2011 年专门针对 PHP 的较新链接。 +1 linuxeasy

http://www.innovativephp.com/sharing-cookies-across-multiple-domains-hosted-on-different-servers/

【讨论】:

  • 子域不能共享cookies!就像在说 --> com 可以与 google.com、yahoo.com 共享其所有 cookie
  • 我已经在大约 9 个域上完成了这项工作。这是可行的。它需要一些服务器设置和正确的编码,但你可以分享。
  • 什么样的服务器设置和什么样的编码?
  • 我现在正在使用 iPod,所以我到办公室时会做出更好的反应,但这是另一个示例 stackoverflow.com/questions/1135734/…
  • 您提到的文档大约有 15 年的历史。我也觉得不可能!
猜你喜欢
  • 1970-01-01
  • 2016-05-18
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2013-08-31
相关资源
最近更新 更多