14

假设我在http://www.example.com,我想删除一个域为.example.com的 cookie和另一个域为www.example.com的 cookie 。

我目前正在使用这个通用函数:

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

这似乎只是删除域为www.example.com的cookie 。

但是我如何指定以便它也删除域为.example.com的 cookie ?

编辑:基本上我正在寻找一个可以删除所有与http://www.example.com相关的 cookie 的功能,只要它们没有 httponly 标志。有这样的功能吗?

4

4 回答 4

14

只有当您在http://example.com并且想要删除http://blah.example.com cookie 时,您才能执行此操作。它也不适用于 www.example.com - 只有“基本”域才能删除子域 cookie。

还有“所有子域”cookie,以 . 开头,也只能由基域删除。

从基本域中,这应该可以删除它:

document.cookie = 'my_cookie=; path=/; domain=.example.com; expires=' + new Date(0).toUTCString();

或者使用优秀的 jquery.cookie 插件:

$.cookie('my_cookie',null, {domain:'.example.com'})
于 2013-08-21T21:16:16.233 回答
10

为安全起见,您不得在其他网站上编辑(或删除)cookie。由于无法保证您同时拥有foo.domain.combar.domain.com,因此您将无法编辑foo.domain.comfrom的 cookie,bar.domain.com反之亦然。

考虑一下您是否被允许这样做并访问了恶意站点,然后返回您的银行,您将在那里将支票存入您的银行帐户。但是,当他们在恶意网站上时,他们用自己的银行信息更新了您的银行 cookie。现在,突然间,支票将存入恶意网站所有者的银行账户。

于 2013-07-21T21:15:31.493 回答
1

只是想添加到这个reg。从子域中删除顶级 cookie。

我在引用的 js 文件 (mysub.mysite.se/file.js) 中使用以下脚本浏览“mysub.mysite.se”。

此代码确实删除了域为“.mysite.se”的 _fbp cookie。

document.cookie = '_fbp=;expires=Thu, 01 Jan 2010 00:00:00 UTC; path=/; domain=.mysite.se';
document.cookie = '_fbp=;expires=Thu, 01 Jan 2010 00:00:00 UTC; path=/; domain=www.mysite.se';
document.cookie ='_fbp=;expires=Thu, 01 Jan 2010 00:00:00 UTC; path=/; domain=mysite.se';

所以@kba 所说的并不是 100% 正确,但是当您尝试删除 3rd 方域上的 cookie 时就是这种情况。

于 2021-04-14T23:37:25.677 回答
0

我们需要设置 cookie 来删除它们。

例子:

this.cookieService.set(cookiename, '', new Date('Thu, 01 Jan 1970 00:00:01 GMT'));

请参阅下面的 Git 位置以获取更多详细信息。 https://github.com/7leads/ngx-cookie-service/issues/5 https://github.com/angular/angular/issues/9954

于 2019-05-07T08:21:48.733 回答