如何通过javascript动态删除会话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插件。
答案 0 :(得分:64)
会话cookie只是一个没有过期日期的普通cookie。这些由浏览器处理,直到窗口关闭或程序退出为止。
但如果cookie是httpOnly
cookie(设置了httpOnly
parameter的cookie),则无法从HTTP外部读取,更改或删除它(意味着必须在服务器上更改)
答案 1 :(得分:32)
请务必提供与设置时完全相同的路径,即
环境:
$.cookie('foo','bar', {path: '/'});
卸下:
$.cookie('foo', null, {path: '/'});
请注意
$.cookie('foo', null);
不起作用,因为它实际上不是相同的cookie。
希望有所帮助。 哈希
中的其他选项也是如此答案 2 :(得分:6)
在将过期日期设置为过去时,IE和Opera存在已删除会话cookie的问题(这是jQuery cookie插件的作用)
这在Safari和Mozilla / FireFox中运行良好。
答案 3 :(得分:2)
您可以通过将到期日期设置为昨天来完成此操作。
我在JavaScript中关于Cookie的新帖子可以为您提供帮助。
http://www.markusnordhaus.de/2012/01/20/using-cookies-in-javascript-part-1/
答案 4 :(得分:1)
这需要在发布cookie的服务器端完成。
答案 5 :(得分:0)
如果是 会话 cookie + hostOnly cookie(如默认挂毯会话的 cookie) 要从 Javascript 中删除,您还必须在编辑/过期 cookie 时不指定域,并且不指定过期日期并将值设置为 null。 >
function clearHOnlySessionCookie(name, path){
var domain = domain || document.domain;
var path = path || "/";
document.cookie = name + "=null; path=" + path+";";
};
答案 6 :(得分:-3)
$(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
});