按名称删除cookie?

时间:2012-05-15 01:16:48

标签: javascript cookies

如何删除名为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?

6 个答案:

答案 0 :(得分:209)

您应该定义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 在域名前放置 dot 意味着此cookie可能存在于任何子域中(www也算作子域)。

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

答案 1 :(得分:167)

要删除Cookie,请将expires日期设置为过去的某些内容。执行此操作的功能将是。

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

然后删除名为roundcube_sessauth的cookie。

delete_cookie('roundcube_sessauth');

答案 2 :(得分:7)

//如果传递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.

答案 3 :(得分:6)

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

答案 4 :(得分:0)

您可以尝试此解决方案

.htaccess

答案 5 :(得分:0)

就我而言,我在不同的环境中使用了打击代码。

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;