Удалить файл cookie по имени?
Как удалить конкретный файл cookie с именем roundcube_sessauth
?
Не следует:
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
cookie?
Ответы
Ответ 1
Чтобы удалить cookie, установите дату expires
на что-то в прошлом. Функция, которая делает это, будет.
var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
Затем, чтобы удалить файл cookie с именем roundcube_sessauth
, просто выполните.
delete_cookie('roundcube_sessauth');
Ответ 2
Вы должны определить путь, по которому существует cookie, чтобы убедиться, что вы удаляете правильный 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, находясь на другой странице, другой cookie продолжит свое существование.
Редактировать на основе комментария @Evan Morrison.
Помните, что в некоторых случаях для определения правильного файла cookie требуется параметр Domain
.
Обычно это определяется как Domain=.yourdomain.com
.
Размещение точки перед вашим доменным именем означает, что этот файл cookie может существовать в любом поддомене (www
также считается поддоменом).
Кроме того, как упоминалось в ответе @RobertT, cookie файлы HttpOnly
нельзя удалить с помощью JavaScript на стороне клиента.
Ответ 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.
Ответ 4
Я не уверен, что это была ситуация с версией Roundcube с мая '12, но для текущего ответ заключается в том, что вы не можете удалить roundcube_sessauth
cookie из JavaScript, поскольку он помечен как HttpOnly
, И это означает, что он недоступен из кода на стороне клиента JS и может быть удален только на стороне сервера script или прямым действием пользователя (через некоторые механизмы браузера, такие как встроенный отладчик или какой-либо плагин).
Ответ 5
Вы можете попробовать это решение
var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;