Как я могу удалить все файлы cookie с помощью JavaScript? [дубликат]



этот вопрос уже есть ответ здесь:



Я написал код для сохранения куки в JavaScript. Теперь мне нужно очистить куки независимо от значений, которые я назначил.



существуют ли какие-либо модули сценариев для удаления всех файлов cookie, которые были сгенерированы Javascript?



Мой Пример Кода:



document.cookie = 'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'

function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

function eraseCookie(name) {
createCookie(name,"",-1);
}


Как еще я могу очистить все куки?



будут ли какие-либо проблемы при тестировании кода на веб-сервере?

673   5  

5 ответов:

но на первый взгляд это выглядит нормально - если вы называете свой eraseCookie () на каждом из файлов cookie, которые Вы читаете из document.cookie, тогда все печенье исчезнет.

может, что-то вроде этого:

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
  eraseCookie(cookies[i].split("=")[0]);

все это с оговоркой:

  • JavaScript не может удалить файлы cookie с установленным флагом HttpOnly.

нет 100% решения для удаления файлов cookie браузера.

проблема в том, что файлы cookie однозначно идентифицируются не только по их ключевому "имени", но и по их "домену" и "пути".

не зная "домен" и "путь" куки, вы не можете надежно удалить его. Эта информация недоступна через JavaScript document.cookie. Он также недоступен через заголовок HTTP Cookie!

однако, если вы знаете имя, путь и домен cookie, затем вы можете очистить его, установив пустой файл cookie с датой истечения срока действия в прошлом, например:

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};

один лайнер

в случае, если вы хотите, чтобы вставить ее в быстро...

document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });

и код букмарклета :

javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();

это функция, которую мы используем в нашем приложении, и она работает нормально.

удалить cookie: нет аргумента метод

function clearListCookies()
{   
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++)
    {   
        var spcook =  cookies[i].split("=");
        deleteCookie(spcook[0]);
    }
    function deleteCookie(cookiename)
    {
        var d = new Date();
        d.setDate(d.getDate() - 1);
        var expires = ";expires="+d;
        var name=cookiename;
        //alert(name);
        var value="";
        document.cookie = name + "=" + value + expires + "; path=/acc/html";                    
    }
    window.location = ""; // TO REFRESH THE PAGE
}

изменить: это приведет к удалению файла cookie, установив его на вчерашнюю дату.

почему вы используете новую дату вместо статической строки UTC?

    function clearListCookies(){
    var cookies = document.cookie.split(";");
        for (var i = 0; i < cookies.length; i++){   
            var spcook =  cookies[i].split("=");
            document.cookie = spcook[0] + "=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";                                
        }
    }

Comments

    Ничего не найдено.