无法删除在服务器上使用JavaScript设置的Cookie

时间:2009-03-09 19:41:31

标签: javascript php firefox cookies

我正在尝试编写PHP代码来删除我域中的所有用户cookie。

这是我得到的:

<?php
$domain = 'www.example.com';
$deleteExpiration = time() - 60*60*24*365*10; // 10 years ago
foreach (array_keys($_COOKIE) as $cookie) {
    setcookie($cookie, 0, $deleteExpiration, '/', $domain);
}

http://www.example.com/delete_cookies.php上运行此代码会删除在服务器上设置的所有Cookie,但不会删除在JavaScript中设置的Cookie。

我使用Firefox Cookie对话框验证了有问题的Cookie确实来自(path = /; domain = www.example.com)。使用Live HTTP标头,我可以看到发送了以下标头:

Set-Cookie: CookieName=0; expires=Fri, 12-Mar-1999 19:36:15 GMT; path=/; domain=www.example.com

所以我相信setcookie命令正在按预期工作。 Firefox只是不尊重请求。

我注意到的另一件事是,如果我在服务器上设置了一个带有domain=www.example.com的cookie,那么它会在{cookie}对话框中列出domain=".www.example.com",但如果我使用以下cookie设置JavaScript代码然后不添加前导点。

我做错了什么?如何删除这些cookie?

1 个答案:

答案 0 :(得分:5)

我有一个类似的问题,它只是通过不通过域解决。

setcookie($cookie, '', 1, '/');

来自cookie_spec的旁注“将路径设置为更高级别的值不会覆盖其他更具体的路径映射。如果给定的cookie名称有多个匹配项,但具有单独的路径,所有匹配的cookie都将被发送。“因此,如果您在不同的路径位置使用相同名称的cookie,则必须删除每个cookie。