178

如何删除具有名称的特定 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饼干?

4

6 回答 6

315

您应该定义 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. 在您的域名前
放置一个www表示此 cookie 可能存在于任何子域(也算作子域)上。

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

于 2014-06-02T13:40:42.643 回答
191

为了删除 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');
于 2012-05-15T01:21:39.987 回答
11

//如果通过 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.
于 2016-11-17T16:15:14.367 回答
9

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

于 2014-01-30T21:19:40.907 回答
2

你可以试试这个解决方案

var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;" + expires;
于 2018-11-20T07:34:27.903 回答
0

在我的情况下,我为不同的环境使用了打击代码。

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;
于 2019-12-15T15:13:36.400 回答