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