【问题标题】:Set cookie to specific domains将 cookie 设置为特定域
【发布时间】:2014-01-05 20:08:40
【问题描述】:

我拥有很多子域,但只有主域有 SSL。在每个子域上都有一个不同的网站,并且都使用相同的 CMS 系统、相同的文件和托管(基本上它是重定向到主域并使用 PHP 我显示他们想要查看的网站)。我的主域只有一个 SSL。它显然不适用于子域。所以我想用AJAX从子域提交表单到主域,但我想这不安全,所以我决定我应该使用:

<iframe src="https://main.com/login.php?webid=958325&pageid=83985&hash=hjWR23grvw$%F$W"></iframe>

但问题在于 cookie。我如何创建一个 cookie 可以在所有子域、主域以及某些特定的 url(如果可能的话)上工作(以相同的方式工作,但域而不是子域)。

【问题讨论】:

  • 如果您有wildcard SSL certificate,您可以使用相同的证书并为您的所有子域使用 SSL。
  • @SilverlightFox,我没有通配符 SSL 证书。

标签: php iframe cookies ssl login


【解决方案1】:

http://php.net/setcookie

你可能会感兴趣的第五个和第六个参数分别是:

  • (第 5 个)域
  • (6th) 安全

例如:

// This cookie will only be set to domain.com/folder if a secure connection exists and will expire once the browser closes.
setcookie('cookie', $variable, 0, 'folder/', 'domain.com', true);

【讨论】:

  • 如果我在 google.com 域中写入,是否会影响 Google?有没有办法设置很多域(也许是数组)?以及如何编写“example.com 的所有子域”?
  • example.com 将使 cookie 对任何子域有效,例如 www.example.com。至于谷歌的事情,我不确定。我从未尝试过,但据我所知,显然您应该能够将 cookie 设置为远程域。
  • 好的,但是我可以这样做:setcookie('cookie', $variable, 0, 'folder/', array('domain.com', 'otherdomain.com','domain.net'), false);?
  • 没有。该参数需要string 变量类型。但是,您可以使用foreach,循环所需域的数组,然后为所有域设置 cookie。
  • 如果您将 secure 设置为 true,则无法通过普通 HTTP 读取(对于非 SSL 子域)。
【解决方案2】:

要让 cookie 在所有子域上运行,您需要将 cookie 设置为 .example.com,但它不适用于 example.com,因此您可能需要设置两个 cookie。

【讨论】:

  • 根据RFC 6265,这不再是真的。
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 2018-01-28
  • 2014-09-15
  • 2020-07-14
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多