Как удалить все файлы cookie с помощью JavaScript?
Я написал код для сохранения файлов cookie в JavaScript. Теперь мне нужно очистить файлы cookie независимо от значений, которые я назначил.
Существуют ли какие-либо script модули для удаления всех файлов 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);
}
Как еще я могу удалить все файлы cookie?
Будут ли какие-либо проблемы при проверке кода на веб-сервере?
Ответы
Ответ 1
Но на первый взгляд это выглядит нормально - если вы назовете ваш eraseCookie() на каждом из файлов cookie, которые вы читаете из document.cookie
, тогда все файлы cookie исчезнут.
Возможно, что-то вроде этого:
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
eraseCookie(cookies[i].split("=")[0]);
Все это с оговоркой:
- JavaScript не может удалить файлы cookie, для которых установлен флаг HttpOnly.
Ответ 2
Нет 100% -ного решения для удаления куки файлов браузера.
Проблема заключается в том, что файлы cookie уникально идентифицируются не только по их ключевому "имени", но также по их "домену" и "пути".
Не зная "домен" и "путь" к файлу cookie, вы не можете надежно удалить его. Эта информация недоступна через JavaScript document.cookie
. Он недоступен через заголовок HTTP 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;
};
Ответ 3
Один вкладыш
Если вы хотите быстро вставить его...
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=/"); }); })();
Ответ 4
Это функция, которую мы используем в нашем приложении, и она работает нормально.
удалить файл 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, установив его на вчерашнюю дату.
Ответ 5
Почему вы используете новую Date вместо статической строки 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;";
}
}