按名称删除cookie?

IT技术 javascript cookies
2021-02-09 01:39:30

如何删除名称为 的特定 cookie roundcube_sessauth

不应该如下:

function del_cookie(name) {
    document.cookie = 'roundcube_sessauth' + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

接着:

<a href="javascript:del_cookie(name);">KILL</a>

杀死roundcube_sessauth饼干?

6个回答

您应该定义 cookie 所在的路径,以确保您正在删除正确的 cookie。

function set_cookie(name, value) {
  document.cookie = name +'='+ value +'; Path=/;';
}
function delete_cookie(name) {
  document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

如果您不指定路径,浏览器将设置一个相对于您当前所在页面的 cookie,因此如果您在不同页面上删除该 cookie,另一个 cookie 将继续存在。

根据@Evan Morrison 的评论进行编辑。
请注意,在某些情况下,要识别正确的 cookie,该Domain参数是必需的。
通常它被定义为Domain=.yourdomain.com. 在您的域名前
放置一个表示此 cookie 可能存在于任何子域(www也算作子域)中。

此外,正如@RobertT 的回答中所述,HttpOnly无法在客户端使用 JavaScript 删除 cookie。

在添加路径和正确的“域=值”之前,我无法删除 cookie。' ... 所以我的声明是: document.cookie = "cookieName= ; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT; domain=.myDomain.com"
2021-03-15 01:39:30
这让我发疯了!添加 Path=/ 后,我就可以删除了。谢谢!
2021-03-23 01:39:30
这应该是正确的答案,Path在大多数情况下它不起作用
2021-03-24 01:39:30
这个解决方案仍然有效,但Max-Age=0如果你关心这些事情,可以用 更简洁地编写
2021-04-03 01:39:30

为了删除cookie,请将expires日期设置为过去。执行此操作的函数将是。

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

然后删除一个名为roundcube_sessauthjust do的cookie

delete_cookie('roundcube_sessauth');
没有错误,我想这只是没有删除 Roundcube 中的 cookie。它可能会很好地删除其他 cookie。
2021-04-05 01:39:30
这适用于谷歌浏览器。安装firebug,看看有没有错误。
2021-04-09 01:39:30
我觉得这应该可以工作(看起来应该可以工作:D!),但是我正在 Firefox 中查看我的页面设置的 cookie,当我单击“杀死”按钮时,cookie 没有被删除。知道为什么吗?
2021-04-10 01:39:30
这个答案在 Chrome 上对我不起作用,还没有在 Firefox 中尝试过。但是下面emii的回答确实有效。
2021-04-10 01:39:30
对于正在寻找此问题答案的用户,请参阅下面的答案。path=/关键是对浏览器的兼容性很重要。
2021-04-12 01:39:30

//如果通过 exMins=0 它将在创建它后立即删除。

function setCookie(cname, cvalue, exMins) {
    var d = new Date();
    d.setTime(d.getTime() + (exMins*60*1000));
    var expires = "expires="+d.toUTCString();  
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

setCookie('cookieNameToDelete','',0) // this will delete the cookie.
是的..而是将参数 exdays 重命名为 exMins.. 谢谢#BhBh
2021-04-04 01:39:30
在这个例子中 exMins 是未定义的,你可能是指 exdays
2021-04-10 01:39:30

我不确定 12 年 5 月的 Roundcube 版本是否就是这种情况,但对于当前版本,答案是您无法roundcube_sessauth从 JavaScript 中删除cookie,因为它被标记为HttpOnly. 这意味着它不能从 JS 客户端代码访问,只能通过服务器端脚本或直接用户操作(通过一些浏览器机制,如集成调试器或某些插件)删除。

你可以试试这个解决方案

var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;" + expires;