1

我有一个网站,我们称它为www.example.com在那个网站上有两个页面。一个人创建一个这样的cookie:

setcookie('daCookie', 'boo', 2000000000, '/', '', false, true);

另一个尝试像这样删除它:

setcookie('daCookie', '', 1, '/', 'www.example.com', false, true);
setcookie('daCookie', '', 1, '/', '.www.example.com', false, true);

现在,我知道第一个脚本是在www.example.com. 如果我使用浏览器(在本例中为 Google Chrome)的开发工具,我可以看到 cookie 的域是www.example.com. 但是,第二次调用不会删除它。如果我将其更改为空域:

setcookie('daCookie', '', 1, '/', '', false, true);

然后它工作。但我真的很想明确指定域。为什么它不起作用?

4

2 回答 2

3

我相信在第二次调用(显式传递域名)中,浏览器可能会在值前面加上一个点(。),因为它是一个域。这就是为什么该调用不会删除之前设置的 cookie(不传递 $domain 参数。)

于 2012-04-15T22:20:02.027 回答
0

从 php 手册中,所有示例(显式传递域)都使用:

setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);

在显式传递域参数的情况下,它看起来好像最好忽略“www”。

关于域参数,它也有这样的说法:

cookie 可用的域。将域设置为“www.example.com”将使 cookie 在 www 子域和更高的子域中可用。可用于较低域的 Cookie,例如“example.com”,将可用于较高的子域,例如“www.example.com”。仍在实施已弃用的 » RFC 2109 的旧浏览器可能需要前导 . 匹配所有子域。

于 2012-04-15T22:30:17.350 回答