【问题标题】:Cannot delete cookies that were set in JavaScript on the server无法删除在服务器上的 JavaScript 中设置的 cookie
【发布时间】:2009-03-09 19:41:30
【问题描述】:

我正在尝试编写 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 Cookies 对话框验证了有问题的 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,那么它会在带有 domain=".www.example.com" 的 Firefox cookie 对话框中列出,但如果我使用 JavaScript 代码设置以下 cookie,那么不添加前导点。

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

【问题讨论】:

标签: javascript php firefox cookies


【解决方案1】:

我遇到了类似的问题,只是通过不传递域来解决。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多