Come posso eliminare tutti i cookie con JavaScript?

Ho scritto codice per salvare i cookie in JavaScript. Ora ho bisogno di cancellare i cookie indipendentemente dai valori che ho assegnato.

Esistono moduli di script per eliminare tutti i cookie generati da Javascript ?

Il mio codice di esempio:

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); } 

In quale altro modo posso cancellare tutti i cookie?

Ci saranno problemi quando testerò il codice sul server web?

Ma a prima vista sembra OK – se chiami il tuo eraseCookie () su ciascuno dei cookie che leggi da document.cookie , allora tutti i cookie sarebbero spariti.

Forse qualcosa del genere:

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

Tutto questo con avvertenza:

  • JavaScript non può rimuovere i cookie con il flag HttpOnly impostato.

Non esiste una soluzione al 100% per eliminare i cookie del browser.

Il problema è che i cookie sono identificati in modo univoco non solo dal loro “nome”, ma anche dal loro “dominio” e “percorso”.

Senza conoscere il “dominio” e il “percorso” di un cookie, non è ansible eliminarlo in modo affidabile. Questa informazione non è disponibile tramite il document.cookie di JavaScript. document.cookie . Non è disponibile nemmeno tramite l’intestazione HTTP Cookie!

Tuttavia, se conosci il nome, il percorso e il dominio di un cookie, puoi cancellarlo impostando un cookie vuoto con una data di scadenza nel passato, ad esempio:

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

Una fodera

Nel caso in cui si desidera incollarlo in fretta …

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

E il codice per un bookmarklet:

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

Questa è una funzione che stiamo usando nella nostra applicazione e funziona perfettamente.

elimina cookie: nessun argomento metodo

 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 } 

Modifica: questo cancellerà il cookie impostandolo sulla data di ieri.

Perché usi la nuova data invece di una stringa UTC statica?

  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;"; } }