有一个网站www.example.com
所有cookie都设置为www子域。
现在有一个新的子域名,我希望所有子域名都能看到cookies。如何获取特定cookie的域名?
目标是将所有旧访问者的www.example.com cookies重写为.example.com,或者为www.example.com重新编写。
为此,我想获取现有cookie的域名。
可能吗?有这个目的的PHP功能吗?
有一个网站www.example.com
所有cookie都设置为www子域。
现在有一个新的子域名,我希望所有子域名都能看到cookies。如何获取特定cookie的域名?
目标是将所有旧访问者的www.example.com cookies重写为.example.com,或者为www.example.com重新编写。
为此,我想获取现有cookie的域名。
可能吗?有这个目的的PHP功能吗?
我不认为这个域在读取cookies时可用,这是受浏览器限制的。解决办法是删除旧的cookie并将其更改为新的域。
E.g.
$value = $_COOKIE['TestCookie'];
setcookie("TestCookie", "", time() - 3600, "www.example.com");
setcookie("TestCookie", $value, time + (60 * 60 * 24 * 30), ".example.com");
如果我的理解正确,您想更改客户端上当前存在的Cookie的域名?
这是不可能的(*)。
在获取cookie服务器端时,是否可以查看它是否设置为www域,请记住从客户端传递的cookie没有域信息?
(*)在客户端可能使用JavaScript。
您可能会发现['$ cookie-> setDomain($域)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117 )有帮助,在[这个独立的库](https://github.com/delight-im/PHP-Cookie)中找到。虽然您无法访问已发送(并在客户端上设置)的cookie的“domain”属性,但您可以简单地设置新的cookie。这将工作正常。 – caw