假设我在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标志即可。有这样的功能吗?
答案 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.com
和bar.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 时就是这种情况。