2013-07-21 41 views
7

假设我在http://www.example.com,我想删除域名为.example.com的Cookie和另一个域名为www.example.com的域名。如何从使用Javascript的特定域中删除cookie?

我目前使用这个通用功能:

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

只似乎是删除cookie,其域名为www.example.com

但我该如何指定,以便它也删除域名为.example.com的Cookie?

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

+0

可能重复(HTTP ://stackoverflow.com/questions/179355/clearing-all-cookies-with-javascript) –

回答

6

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

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

+0

是的,我可以。我刚刚在yahoo.com上打开了我的Chrome控制台,并且调用了我的原始帖子的功能,该功能删除了www.yahoo.com中设置的cookie。不过,我似乎无法删除.yahoo.com cookies。我正在寻找一个可以通过指定要从中删除cookie的域的功能。 –

+0

@TheRandomGuy Chrome控制台与网站执行的代码不在同一限制下工作。在网站'foo.domain.com'上,您将无法编辑'bar.domain.com'上的Cookie。请参阅[其他](http://stackoverflow.com/questions/117240/is-it-possible-to-delete-subdomain-cookies)[类似](http://stackoverflow.com/questions/6525484/deleting-cookies在其他子域)[问题](http://stackoverflow.com/questions/3923285/how-to-remove-main-domain-cookie-from-sub-domain)如果你不相信。 – kba

+0

我不是在寻找从我的脚本不会触发的域中删除cookie。我的脚本将被加载到例如www.someurl.com,我希望我的脚本从www.someurl.com和.someurl.com删除可能的最大Cookie数量 –

6

只有当您在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使用JavaScript]的

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