Не удалось удалить cookie из javascript
Я нахожусь на внешнем сайте, и я пытаюсь удалить cookie с помощью javascript.
В консоли я сделал следующее:
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
deleteAllCookies()
который должен установить срок действия файла cookie документа в 1970 году
Но после этого я вызываю
document.cookie.split(";")
Печеньки кажутся нетронутыми. Любые идеи, почему?
PS: код выше - из stackoverflow
Удаление всех файлов cookie с помощью JavaScript
Ответы
Ответ 1
Я просто столкнулся с этой проблемой и, наконец, решил ее. Ваш файл cookie, скорее всего, не удаляется, потому что когда вы устанавливаете новое значение, оно должно соответствовать пути и домену исходного cookie, который вы пытаетесь удалить.
Другими словами:
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=[something];"
что значение "что-то" должно соответствовать всем существующим файлам cookie.
Отладчики JS могут не дать вам подробностей о том, что такое путь и домен, но станет очевидным, какой из них вы не используете, если вы посмотрите на значение существующего файла cookie в настройках Chrome- > или аналогичной панели в Firefox/Safari/IE.
Сообщите мне, если это поможет.
Ответ 2
У меня была такая же проблема. Я обнаружил, что файл cookie был установлен под пустым субдоменом, например. домен cookie был ".domain.com", и мой сайт был размещен на "sub.domain.com".
Чтобы исправить, я добавил домен cookie к установленному значению
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.domain.com";
Чтобы узнать, в каком домене установлен файл cookie, в Chrome открывайте инструменты разработчика → ресурсы → куки и посмотрите на поля домена.
Ответ 3
Я работал над букмарклетом браузера для удаления файлов cookie из текущего домена, у меня была такая же проблема, моя проблема заключалась в том, что я тоже не пользовался доменом. Вот мое значение букмарклета:
javascript: (function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=." + location.host.split('.').slice(-2).join(".") +";path=/"); }); })();
Обратите внимание, что я заменяю "domain.com" на location.host.split('.'). slice (-2).join( "." ), так что я всегда получаю имя домена без субдоменов, то есть почты. google.com станет google.com. при установке срока действия cookie мы должны игнорировать субдемен (по крайней мере, в моем случае это было так.
Ответ 4
Очистить файлы cookie сеанса в ie11?
Может быть ссылка выше может дать справку
Просто запустите JavaScript, как показано ниже
document.execCommand("ClearAuthenticationCache")
Я попробовал, и cookie был очищен.