【问题标题】:How to get the domain of a specific cookie?如何获取特定cookie的域?
【发布时间】:2020-02-25 00:01:39
【问题描述】:

有一个网站www.example.com
所有 cookie 都设置为 www 子域。
现在有一个新的子域,我希望所有子域都能看到 cookie。

目标是将所有旧访问者的www.example.com cookie 重写为.example.com,或者如果设置为www.,则为.example.com 编写新的cookie

为此,我想获取现有 cookie 的域。
可能吗?有没有为此目的的php函数?

【问题讨论】:

标签: php cookies subdomain


【解决方案1】:

我认为在读取 cookie 时域不可用,这是受浏览器限制的。解决方案是删除旧 cookie 并将其更改为新域。

例如

$value = $_COOKIE['TestCookie'];
setcookie("TestCookie", "", time() - 3600, "www.example.com");
setcookie("TestCookie", $value, time + (60 * 60 * 24 * 30), ".example.com");

【讨论】:

  • 我有这个想法,但是这样即使所有的cookies都改变了,这个过程也会永远重复。我在服务器端做。还有一件事:谷歌浏览器确实知道 cookie 域(在 Inspect Element 中)
  • 您可以添加另一个 cookie,让您知道您已经完成了转换。
【解决方案2】:

如果我理解正确,您想更改客户端上当前存在的 cookie 的域?

这是不可能的(*)。

在获取cookie服务器端时,是否可以查看是否为www域设置,记住从客户端传递的cookie没有域信息?

(*) 可能在客户端使用 JavaScript。

【讨论】:

    【解决方案3】:

    您可以使用 PHP 函数 session_get_cookie_params()。我希望这会成功。

    domain:"www.domain_name.com"
    httponly:false
    lifetime:1525181833
    path:"/"
    secure:false
    

    【讨论】:

    • 小心:php.net/manual/ru/function.session-get-cookie-params.php#119445。我用 httpOnly true 做了 cookie,这个函数显示它是 false
    • session_get_cookie_param() 仅获取 php.ini 中为会话 cookie 定义的设置(与 session_start()、$_SESSION 等一起使用),而不是有关实际 cookie 的信息
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多