我有一个网站,我们称之为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);
然后它有效。但我真的想明确指定域名。为什么不起作用?
答案 0 :(得分:2)
我相信第二次调用(显式传递域名),浏览器可以在值前加上一个点(。),因为它是一个域。这就是为什么该调用不会删除之前设置的cookie(不传递$ domain param。)
答案 1 :(得分:0)
从php手册中,所有示例(显式传递域名)都使用:
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
在明确传递domain参数的情况下,看起来最好忽略'www。'
关于域参数,还有这个说法:
Cookie可用的域。将域设置为 'www.example.com'将在www子域中提供cookie 更高的子域名。 Cookie可用于较低域名,例如 'example.com'将可用于更高的子域,例如 'www.example.com'。较旧的浏览器仍在实施已弃用的» RFC 2109可能需要领先。匹配所有子域。