【问题标题】:php session_set_cookie_params() for two domains两个域的 php session_set_cookie_params()
【发布时间】:2019-04-24 19:19:01
【问题描述】:

我只需要为两个域设置 PHPSESSID cookie:

  • www.domain.tld
  • sub.domain.tld

其他子域不应共享相同的 PHPSESSID。

我可以使用session_set_cookies_param(),但据我所知,这只能为一个域或所有子域设置。

但在我的情况下,子域 anothersub.domain.tld 不应该有这个 PHPSESSID。

我想要这个,因为我们在子域上有图像,并且为所有子域设置 PHPSESSID 会导致浏览器随请求发送 PHPSESSID cookie。这对静态资源有轻微的性能问题,建议使用无 cookie 域

【问题讨论】:

标签: php


【解决方案1】:

不能这样,这与PHP无关。这就是cookies的一般工作方式。只能设置一个域(或前面带点的域)。

您必须使用不同的域来托管图像。

【讨论】:

    【解决方案2】:

    正如已经解释的那样,这在技术上是不可能的,由于 cookie “语法”,我认为你应该能够解决这个问题,如果你自己设置第二个 cookie。

    • 使用session_set_cookies_param 让它只为www.domain.tld 设置cookie。

    • session_start 之后添加您自己的代码,这将再次设置“相同”cookie,这次只是为sub.domain.tld

    session_namesession_id 帮助您找出必要的名称和值;如果你愿意,你也可以使用session_get_cookie_params 来匹配其他参数(比如生命周期和路径,如果后者在给定的设置中有意义的话)。


    编辑:但请记住,如果会话 ID 可能在您的应用程序中的任何其他点在 session_start 之后发生变化,例如,如果在任何地方使用 session_regenerate_id,您当然必须在那里更新您的第二个 cookie也是。

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多