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

sag*_*agi 5 javascript php cookies firefox

我正在尝试编写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);
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

所以我相信setcookie命令正如预期的那样工作.Firefox只是不尊重请求.

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

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

gra*_*bot 5

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

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

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