如何使用Javascript从特定域中删除cookie?

时间:2013-07-21 21:12:48

标签: javascript cookies subdomain

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

我目前正在使用此通用功能:

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 个答案:

答案 0 :(得分:8)

只有当您处于http://example.com并想要删除http://blah.example.com Cookie时才能执行此操作。它也无法在www.example.com上运行 - 只有“基础”域可以删除子域cookie。

还有“all-subdomain”cookie,以。开头,也只能被基本域删除。

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

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

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

$.cookie('my_cookie',null, {domain:'.example.com'})

答案 1 :(得分:6)

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

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

我在引用的 js 文件 (mysub.enkelmedia.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 时就是这种情况。

相关问题