2009-07-06 122 views
44

如何通過javascript動態地刪除會話cookie,而無需手動重啓瀏覽器?如何刪除會話Cookie?

我在某處讀到會話cookie保留在瀏覽器內存中,當瀏覽器關閉時會被刪除。

// sessionFooCookie is session cookie 
// this code does not delete the cookie while the browser is still on 
jQuery.cookie('sessionFooCookie', null); 

謝謝。

更多信息:上面的代碼段是 JavaScript代碼段,使用jQuery 及其jQuery.cookie插件。

回答

56

會話cookie只是沒有過期日期的普通cookie。這些由瀏覽器處理爲有效,直到窗口關閉或程序退出。

但是,如果Cookie是一個httpOnly Cookie(一個包含httpOnly parameter集的Cookie),則無法從HTTP之外讀取,更改或刪除它。

+3

我必須說,我是用頭靠在顯示器跳動約一個小時的問題_「爲什麼我無法從JavaScript的刪除會話cookie?」 _,直到我有沒有發現簡短的答案:它是`httpOnly` ...謝謝,非常有用。 – BlitZ 2016-07-08 03:54:04

+1

供參考:在_Gumbo的最後一句話中,他實際上是指_server side_。 – ThomasDC 2017-10-23 07:49:41

6

存在已知與IE和Opera的問題設置到期日期過去(這是jQuery的cookie的插件做什麼)

這個工作在Safari和Mozilla/FireFox的罰款時,不刪除會話cookie。

-3

刪除jQuery cookie

$(function() { 
    var COOKIE_NAME = 'test_cookie'; 
    var options = { path: '/', expires: 10 }; 
    $.cookie(COOKIE_NAME, 'test', options); // sets the cookie 
    console.log($.cookie(COOKIE_NAME)); // check the value // returns test 
    $.cookie(COOKIE_NAME, null, options); // deletes the cookie 
    console.log($.cookie(COOKIE_NAME)); // check the value // returns null 
}); 
0

這需要在服務器端,簽發該cookie來實現。

+0

你爲什麼這麼想? – ysth 2015-03-26 16:54:34

+0

你如何做到這一點?如果可以的話,特別在Node中!謝謝。 – 2015-08-19 02:26:42

32

確保供應,當你將其設置爲完全一樣的路徑,即

設置:

$.cookie('foo','bar', {path: '/'}); 

刪除:

$.cookie('foo', null, {path: '/'}); 

注意

$.cookie('foo', null); 

因爲我不會工作t實際上不是同一個cookie。

希望有所幫助。 其他選項同樣適用於散列