Javascript 是否按名称删除cookie?

Javascript 是否按名称删除cookie?,javascript,cookies,Javascript,Cookies,如何删除名为roundcube\u 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

如何删除名为
roundcube\u 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\u sessauth
cookie?

以删除cookie,将
过期日期设置为过去的某个日期。这样做的函数是

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
然后,要删除名为
roundcube\u sessauth
的cookie,只需执行以下操作

delete_cookie('roundcube_sessauth');

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

您应该定义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=.yourdomain.com

在域名前面加一个点意味着此cookie可能存在于任何子域(
www
也算作子域)


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

//如果传递的exMins=0,它将在创建cookies后立即删除

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.

你可以试试这个解决方案

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

在我的例子中,我为不同的环境使用了blow代码

document.cookie=name+`=;路径=/;Expires=周四,1970年1月1日00:00:01 GMT;Domain=.${document.Domain.split('.').splice(1.join('.')}`;

名称
?这有什么意义?或者这是一个更通用的版本的遗留问题,它允许您指定cookie名称?不要认为这是一个重复。它特别要求清除所有cookies。我不想删除所有cookies。。。就一个。我通过谷歌搜索找到了基本代码。当然我试过了@Paxdiablo我假设它是用来命名cookie的,但我可能完全错了。@Paxdiablo-
我如何删除特定的
cookie
。@Derek等人,你似乎误解了。我的意思是,Gabe提议的dupe根本不是dupe,因为提议的dupe询问删除所有cookie,而这个问题询问删除特定cookie。我没有以任何方式抱怨这个问题,无论是形状还是形式:-)我觉得这个应该可以工作(看起来应该可以工作:D!),但我正在查看firefox中我的页面设置的cookie,当我单击“KILL”按钮时,cookie没有被删除。知道为什么吗?这在Google Chrome中有效。安装firebug并查看是否有任何错误。没有错误,我想它只是没有删除Roundcube中的cookie。它可能会删除其他Cookie。对于正在寻找此问题答案的用户,请参阅下面的答案。
path=/
键对于浏览器兼容性很重要。这个答案在Chrome上不适用,我还没有在Firefox上尝试过。但埃米下面的回答确实有效。这让我发疯了!在添加Path=/之后,我可以删除。谢谢这应该是正确的答案,在大多数情况下,如果没有
Path
,它将无法工作。在添加Path和正确的“Domain=value;”之前,我无法删除cookie。。。所以我的声明是:document.cookie=“cookieName=;path=/;expires=Thu,1970年1月1日00:00:01 GMT;domain=.myDomain.com”这个解决方案仍然有效,但是可以用
Max Age=0
编写得更简洁一些,如果您关心这些事情的话。在这个示例中,exmin没有定义,您可能是指exdaysYeah。。改为将参数exdays重命名为exMins。。谢谢