2012-05-15 144 views
94

如何刪除名稱爲roundcube_sessauth的特定cookie?按名稱刪除Cookie?

不應該如下:

function del_cookie(name) { 
    document.cookie = 'roundcube_sessauth' + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 
} 

然後:

<a href="javascript:del_cookie(name);">KILL</a> 

roundcube_sessauth餅乾嗎?

+0

那麼你嘗試了嗎? – Gabe

+1

'name'?那有什麼意義呢?或者它是一個更靈活的版本的宿醉,允許您指定cookie名稱? – paxdiablo

+0

可能的重複[如何用Javascript刪除所有cookies?](http://stackoverflow.com/questions/595228/how-can-i-delete-all-cookies-with-javascript) – Gabe

回答

121

爲了刪除cookie,將日期設爲expires日期。這樣做的功能是。

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

然後刪除名爲roundcube_sessauth的cookie就行了。

delete_cookie('roundcube_sessauth'); 
+0

我覺得這*應該*工作(它看起來應該工作:D!) ,但我正在查看我的頁面在Firefox中設置的cookie,當我點擊「KILL」按鈕時,Cookie不會被刪除。任何想法爲什麼? – Charlie

+0

這適用於Google Chrome。安裝螢火蟲,看看是否有任何錯誤。 – 2012-05-15 01:30:36

+1

沒有錯誤,我想這只是不刪除Roundcube中的cookie。它可能會刪除其他cookie就好了。 – Charlie

4

我真的不知道,如果這是與Roundcube版本的情況從五月'12,但對於目前的一個答案是,你不能從JavaScript刪除roundcube_sessauth餅乾,因爲它被標記爲HttpOnly 。這意味着它無法從JS客戶端代碼訪問,只能通過服務器端腳本或直接用戶操作(通過某些瀏覽器機制,如集成調試器或某個插件)刪除。

143

你應該定義哪個cookie存在,以確保您刪除真實的

function set_cookie(name, value) { 
    document.cookie = name +'='+ value +'; Path=/;'; 
} 
function delete_cookie(name) { 
    document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
} 

如果不指定路徑路徑,瀏覽器的cookie相對設置頁面,你目前的,所以如果你刪除Cookie在其他頁面上繼續存在。

根據@Evan Morrison的評論編輯。
請注意,在某些情況下,爲了識別正確的cookie,Domain參數也是必需的。
通常用作Domain=.yourdomain.com
域名前面的時間段表示此cookie可能存在於任何子域(www也可視爲子域)。

此外,正如@ RobertT的回答中所述,HttpOnly Cookie無法在客戶端使用JavaScript進行刪除。

+13

這讓我瘋狂!在添加Path = /之後,我可以刪除。謝謝! – duyn9uyen

+4

同樣在這裏,我需要'path = /''爲此工作。 – bobbyrne01

+9

這應該是正確的答案,它在大多數情況下沒有'Path'就不起作用。 – SuperMarco

3

//如果傳遞了exMins = 0,它會在創建它時立即刪除。

function setCookie(cname, cvalue, exMins) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exMins*60*1000)); 
    var expires = "expires="+d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
} 

setCookie('cookieNameToDelete','',0) // this will delete the cookie. 
+0

exMins在這個例子中是未定義的,你可能是指exdays – BHBH

+0

是的..而不是將exdays重命名爲exMins ..謝謝#BhBh –

1

setCookie('cookienameToDelete','',0) 作品對我來說

+0

這並沒有提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/18694016) – abigperson