Удалить файл 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;