按名称删除Cookie?

如何删除一个名为roundcube_sessauth cookie?

不应该如下:

 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 cookie?

为了删除一个cookie,将expiresdate设置为过去的事情。 这样做的function是。

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

然后删除一个名为roundcube_sessauth的cookie就行了。

 delete_cookie('roundcube_sessauth'); 

您应该定义cookie存在的path,以确保您删除了真实的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;'; } 

如果您不指定path,浏览器会将您当前所在的页面设置为相对于您的页面,因此如果您在不同页面上删除Cookie,则其他Cookie将继续存在。

编辑基于@Evan Morrison的评论。
请注意,在某些情况下,为了识别正确的Cookie, Domain参数也是必需的。
通常用作Domain=.yourdomain.com
域名前面的时间段表示该cookie可能存在于任何子域( www也被视为子域)。

另外,正如@ RobertT的回答所提到的, HttpOnly cookies不能在客户端用JavaScript删除。

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

//如果传递exMins = 0,它将在创build它时立即删除。

 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.