【问题标题】:Setting cookie for site in http and https under different subdomains in PHP在PHP的不同子域下为http和https中的站点设置cookie
【发布时间】:2011-01-28 16:47:21
【问题描述】:

情况:

  1. 我正在尝试在一个域 secure.example.com 下运行 https 商店 (xcart),并且我想访问它在 http www.example.com 中设置的 cookie
  2. 我在 Apache (MAMP) 上运行 PHP,在 Firefox 中使用 Firecookie 进行测试
  3. 现有代码将 cookie 设置为 .secure.example.com。我不确定这是否与 xcart 相关,但 setcookie 实际上是使用 secure.example.com 调用的。我不确定为什么要附加“.”。

问题:

  1. 当我尝试在 https 中使用 setcookie 以使用域 .example.com 或仅使用 example.com 时,无论我是在 http 还是 https 下运行商店,都不会创建任何 cookie。我正在使用的测试代码是:

    setcookie('three', 'two', 0, "/", ".example.com");
    

如果我将 cookie 设置为 secure.example.com 或 .secure.example.com,它会显示出来。

cookie 没有显示是否有原因?

【问题讨论】:

  • Gumbo - 看起来 nilacqua 在使用 localhost 时调用 setcookie 时正在使用 .example。

标签: php cookies https


【解决方案1】:

你试过setcookie('three', 'two', 0, "/", ".mydomain.com");吗?

【讨论】:

  • 我现在在 localhost 上运行它,所以最后我没有 .com,只有 www.mydomain 和 secure.mydomain
  • 将主机文件条目(C:\WINDOWS\system32\drivers\etc\hosts)添加到任何域并将其映射到本地计算机的 IP。确保域没有通过浏览器中的任何代理。
【解决方案2】:

是的 - 但策略由浏览器决定(并且在某些浏览器上可以配置)。

IIRC 前面的语义。在 Cooke RFC 中进行了解释(标准 cookie 状态为 2109:

A 是一个 FQDN 字符串,格式为 NB,其中 N 是一个非空名称 字符串,B 的格式为 .B',B' 是 FQDN 字符串。 (所以,x.y.com 域匹配 .y.com 但不匹配 y.com。)

我将其解释为意味着 setcookie 指令中旨在用作通配符匹配的 domian 应该以“。”开头。即 .example.com - 但是规范继续说:

域=域 可选的。 Domain 属性指定其所在的域 cookie 有效。明确指定的域必须始终启动 用一个点。

这对我来说意味着相反。

我建议你自己 read it 进行实验。

显而易见的实用解决方案是,在没有合适的 cookie 的情况下,重定向回设置 cookie 的网络服务器,以便它检查其 cookie,然后将另一个重定向发送回原始服务器,其中包含查询字符串中的 cookie 详细信息,然后删除与当前服务器关联的 cookie 的副本。

或者,您可能会从使用具有更多部分的 FQDN 获得一些好处,例如

secure.www.example.com

和

www.example.com

(删除 [.]www.example.com 的 cookie)

HTH

C.

【讨论】:

    【解决方案3】:

    问题是我使用 localhost 和一个单词域“mydomain”,由于某种原因,这个事实被从原始消息中编辑了。至少 firefox 需要至少两个词来明确设置 cookie,例如 mydomain.local。我将主机文件更改为具有域:www.mydomain.local 和 secure.mydomain.local,并且我能够将 cookie 设置为 .mydomain.local。

    另外我发现php会自动放一个“.”在显式设置的 cookie 前面。

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 2011-12-17
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多