Подтвердить что ты не робот

Не удалось удалить 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

4b9b3361

Ответ 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 был очищен.