2009-07-06 123 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。

希望有所帮助。 其他选项同样适用于散列