2013-07-21 73 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'})