2009-07-06 5 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 является файлом cookie httpOnly (файл cookie с набором httpOnly parameter), вы не можете читать, изменять или удалять его из-за пределов HTTP.

+3

Я должен сказать, что я бил головой с монитором около часа с вопросом _ «Почему я не могу удалить куки сессии с JavaScript?» _, Пока я не имею нашел короткий ответ: это было 'httpOnly' ... Спасибо, очень полезно. – BlitZ

+1

FYI: с _the HTTP_ в последнем предложении Gumbo, он на самом деле означает _server side_. – ThomasDC

6

Там известны проблемы с IE и Opera не удаляя куки сессии при установке истекают даты в прошлое (что делает печенье плагин JQuery)

Это отлично работает в Safari и Mozilla/FireFox.

-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

Это должно быть сделано на стороне сервера, где было выдано печенье.

+0

почему вы так думаете? – ysth

+0

Как вы это делаете? В частности, в узле, если вы можете! Спасибо. –

32

Обязательно поставить точно такой же путь, как и при установке его, т.е.

Окружение:

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

Удаление:

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

Обратите внимание, что

$.cookie('foo', null); 

НЕ будет работать, так как i t на самом деле не тот же файл cookie.

Надеюсь, что это поможет. То же самое касается других опций в хеш

+3

Спасибо за разъяснение этого.Хотел бы я проголосовать несколько раз. –

+1

этот пост спас меня от головной боли. благодаря! – lfender6445

Смежные вопросы