按名称删除 Cookie?

2022-08-30 01:46:51

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


答案 1

您应定义 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,该参数是必需的。通常它被定义为 .在您的域名前面放置一个意味着此cookie可能存在于任何子域(也算作子域)上。DomainDomain=.yourdomain.examplewww

此外,正如@RobertT的答案中提到的,Cookie不能在客户端使用JavaScript删除。HttpOnly


答案 2

为了删除cookie,请将日期设置为过去的内容。执行此操作的函数将是。expires

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

然后删除一个名为 just do 的 cookie。roundcube_sessauth

delete_cookie('roundcube_sessauth');