Вопрос по javascript – Удалить куки по имени?

120

Как я могу удалить определенный файл 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 печенье?

Не думай, что это обман. Это конкретно просит про очисткувс печенье paxdiablo
name? Какой в этом смысл? Или это похмелье от более универсальной версии, позволяющей указать имя файла cookie? paxdiablo
Я не хочу удалять все куки ... Только один. Я нашел основной код от поиска в Google. И конечно я попробовал это. @Paxdiablo Я предположил, что он назвал cookie, но я могу быть совершенно неправ. Charlie
@ Дерек и др. Вы, кажется, неправильно поняли. Я заявлял, что предложенный обман от Гейба вовсе не был обманом, потому что предложенный обман спросил об удалениивс куки, и этот вопрос задает вопрос об удаленииконкретны cookie. Я былн жаловаться на этот вопрос в любом виде, форме или форме: -) paxdiablo
@ paxdiablo -How can I delete a specific cookie ... Derek 朕會功夫

Ваш Ответ

5   ответов
161

Чтобы удалить печенье, установитеexpires свидание с чем-то в прошлом. Функция, которая делает это, будет.

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

Затем удалите печенье с именемroundcube_sessauth просто сделать

delete_cookie('roundcube_sessauth');
Я чувствую себя такдолже работает (похоже, должно работать: D!), но я просматриваю файлы cookie, установленные моей страницей в Firefox, и когда я нажимаю кнопку «УБИТЬ», файл cookie не удаляется. Есть идеи почему? Charlie
Это работает в Google Chrome. Установите firebug и посмотрите, есть ли ошибки. user672118
Нет ошибок, я думаю, что это просто не удалить куки в Roundcube. Вероятно, он просто удаляет другие файлы cookie. Charlie
Для пользователей, которые ищут ответ на этот вопрос, см. Ответ ниже.path=/люч @ важен для совместимости браузера. bencripps
Этот ответ не работал для меня в Chrome, не пробовал в Firefox. Но ответ Эмии ниже сработал. Daniel F
194

по которому существует файл 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 продолжит свое существование.

Редактировать на основе комментария Эвана Моррисона.
Помните, что в некоторых случаях для определения правильного файла cookie,Domainараметр @ тоже обязателен.
Обычно используется какDomain=.yourdomain.com
Период перед именем домена означает, что этот файл cookie может существовать в любом поддомене www также считается поддоменом).

Также, как упоминалось в ответе @ RobertT,HttpOnly куки не могут быть удалены с помощью JavaScript на стороне клиента.

Это сводило меня с ума! После того, как я добавил Path = /, я смог удалить. Благодарность duyn9uyen
то же самое, мне нужно 'path = /;' чтобы это работало. bobbyrne01
Я не смог удалить cookie, пока не добавил путь и правильное значение «Домен =»; '... Итак, мое заявление было таким: document.cookie = "cookieName =; path = /; expires = Четверг, 01 января 1970 г. 00:00:01 GMT; домен = .myDomain.com" Evan Morrison
Это должен быть правильный ответ, он не работает безPath в большинстве случаев SuperMarco
Это решение все еще работает, но можно написать несколько более кратко с помощьюMax-Age=0, если тебя волнуют такие вещи. MaxPRafferty
7

// если передано exMins = 0, оно будет удалено, как только оно его создаст.

    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.
exMins не определен в этом примере, вы, вероятно, имели в виду exdays BHBH
Да ... вместо этого переименуйте аргументы exdays в exMins .. спасибо # BhBh Kishor Patil
6

была ли это ситуация с версией Roundcube от мая 12 года, но для текущей версии ответ заключается в том, что вы не можете удалитьroundcube_sessauth cookie из JavaScript, так как он помечен какHttpOnly. А это значит, что он недоступен из кода на стороне клиента JS и может быть удален только сценарием на стороне сервера или прямым действием пользователя (с помощью некоторых механизмов браузера, таких как встроенный отладчик или некоторый плагин).

0

Ты можешь попробовать это решение

var d = new Date();
d.setTime(d.getTime() + (0*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;
Попробуй, чтобы у меня получилось Nafees

Похожие вопросы