按名称删除cookie?

Cha*_*lie 134 javascript cookies

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

不应该如下:

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

然后:

<a href="javascript:del_cookie(name);">KILL</a>
Run Code Online (Sandbox Code Playgroud)

杀掉roundcube_sessauth饼干?

小智 227

您应该定义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;';
}
Run Code Online (Sandbox Code Playgroud)

如果您没有指定路径,浏览器会根据您当前所在的页面设置cookie,因此如果您在不同的页面上删除cookie,则其他cookie将继续存在.

根据@Evan Morrison的评论编辑.
请注意,在某些情况下,要识别正确的cookie,Domain也需要参数.
通常Domain=.yourdomain.com
在域名前面用作Period表示此cookie可能存在于任何子域(www也称为子域).

另外,正如@ RobertT的回答中提到的,HttpOnly在客户端使用JavaScript无法删除cookie.

  • 这让我疯了!添加Path = /之后,我就能删除了.谢谢! (23认同)
  • 这应该是正确的答案,在大多数情况下没有`Path`它不起作用. (12认同)
  • 在添加路径和正确的'Domain = value之前,我无法删除cookie; '...所以我的陈述是:document.cookie ="cookieName =; path = /; expires = Thu,1970年1月1日00:00:01 GMT; domain = .myDomain.com" (8认同)
  • 同样在这里,我需要'path = /;' 为此工作. (6认同)

小智 177

为了删除cookie,将expires日期设置为过去的某些内容.这样做的功能就是.

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

然后删除名为roundcube_sessauthjust do 的cookie .

delete_cookie('roundcube_sessauth');
Run Code Online (Sandbox Code Playgroud)

  • 对于寻找此问题答案的用户,请参阅下面的答案.`path = /`键对于浏览器兼容性很重要. (38认同)
  • 我觉得这个 *应该* 可以工作(看起来应该可以工作:D!),但是我正在 firefox 中查看我的页面设置的 cookie,当我单击“KILL”按钮时,cookie 没有得到已删除。知道为什么吗? (2认同)
  • 这个答案在Chrome上对我不起作用,没有在Firefox中尝试过.但是下面的emii答案确实奏效了. (2认同)

Kis*_*til 8

//如果传递了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.
Run Code Online (Sandbox Code Playgroud)


Rob*_*rtT 6

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