w3schools variable read leer guardar from expires ejemplos delete cookie check javascript cookies

variable - Borrar todas las cookies con JavaScript



leer cookie javascript (17)

¿Cómo borras todas las cookies para el dominio actual usando JavaScript?


Enfoque funcional + ES6

const cookieCleaner = () => { return document.cookie.split(";").reduce(function (acc, cookie) { const eqPos = cookie.indexOf("="); const cleanCookie = `${cookie.substr(0, eqPos)}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;`; return `${acc}${cleanCookie}`; }, ""); }

Nota: no maneja caminos


Un trazador de líneas

En caso de que quieras pegarlo rápidamente ...

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

Y el código para un bookmarklet:

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


Aquí hay un código simple para eliminar todas las cookies en JavaScript .

function deleteAllCookies(){ var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) deleteCookie(cookies[i].split("=")[0]); } function setCookie(name, value, expirydays) { var d = new Date(); d.setTime(d.getTime() + (expirydays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = name + "=" + value + "; " + expires; } function deleteCookie(name){ setCookie(name,"",-1); }

Ejecute la función deleteAllCookies() para borrar todas las cookies.


Después de probar casi todos los métodos enumerados en múltiples estilos de navegadores en múltiples estilos de cookies, no encontré que casi nada funciona, incluso el 50%.

Por favor, ayude a corregir, según sea necesario, pero voy a tirar mis 2 centavos aquí. El siguiente método lo desglosa todo y, básicamente, crea la cadena de valor de la cookie en función de las partes de configuración, además de incluir una compilación paso a paso de la cadena de ruta de acceso, empezando por / por supuesto.

Espero que esto ayude a otros y espero que cualquier crítica llegue en la forma de perfeccionar este método Al principio quería un simple 1-liner como algunos otros buscaban, pero las cookies JS son una de esas cosas que no son tan fáciles de tratar.

;(function() { if (!window[''deleteAllCookies''] && document[''cookie'']) { window.deleteAllCookies = function(showLog) { var arrCookies = document.cookie.split('';''), arrPaths = location.pathname.replace(/^///, '''').split(''/''), // remove leading ''/'' and split any existing paths arrTemplate = [ ''expires=Thu, 01-Jan-1970 00:00:01 GMT'', ''path={path}'', ''domain='' + window.location.host, ''secure='' ]; // array of cookie settings in order tested and found most useful in establishing a "delete" for (var i in arrCookies) { var strCookie = arrCookies[i]; if (typeof strCookie == ''string'' && strCookie.indexOf(''='') >= 0) { var strName = strCookie.split(''='')[0]; // the cookie name for (var j=1;j<=arrTemplate.length;j++) { if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist else { var strValue = strName + ''=; '' + arrTemplate.slice(0, j).join(''; '') + '';''; // made using the temp array of settings, putting it together piece by piece as loop rolls on if (j == 1) document.cookie = strValue; else { for (var k=0;k<=arrPaths.length;k++) { if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist else { var strPath = arrPaths.slice(0, k).join(''/'') + ''/''; // builds path line strValue = strValue.replace(''{path}'', strPath); document.cookie = strValue; } } } } } } } showLog && window[''console''] && console.info && console.info("/n/tCookies Have Been Deleted!/n/tdocument.cookie = /"" + document.cookie + "/"/n"); return document.cookie; } } })();


Después de un poco de frustración con esto mismo, junté esta función que intentará eliminar una cookie con nombre de todas las rutas. Simplemente llama a esto para cada una de tus cookies y deberías estar más cerca de eliminar todas las cookies de las que estabas antes.

function eraseCookieFromAllPaths(name) { // This function will attempt to remove a cookie from all paths. var pathBits = location.pathname.split(''/''); var pathCurrent = '' path=''; // do a simple pathless delete first. document.cookie = name + ''=; expires=Thu, 01-Jan-1970 00:00:01 GMT;''; for (var i = 0; i < pathBits.length; i++) { pathCurrent += ((pathCurrent.substr(-1) != ''/'') ? ''/'' : '''') + pathBits[i]; document.cookie = name + ''=; expires=Thu, 01-Jan-1970 00:00:01 GMT;'' + pathCurrent + '';''; } }

Como siempre, diferentes navegadores tienen un comportamiento diferente, pero esto funcionó para mí. Disfrutar.


Encontré un problema en IE y Edge. Los navegadores Webkit (Chrome, safari) parecen ser más tolerantes. Al configurar las cookies, siempre establezca la "ruta" en algo, ya que la predeterminada será la página que establece la cookie. Por lo tanto, si intenta expirarlo en una página diferente sin especificar la "ruta", la ruta no coincidirá y no expirará. El valor document.cookie no muestra la ruta de acceso o la caducidad de una cookie, por lo que no puede derivar dónde se estableció la cookie al observar el valor.

Si necesita expirar las cookies de diferentes páginas, guarde la ruta de la página de configuración en el valor de la cookie para que pueda extraerla más tarde o siempre agregue "; path=/;" al valor de la cookie. Entonces expirará desde cualquier página.


Mas simple Más rápido.

function deleteAllCookies() { var c = document.cookie.split("; "); for (i in c) document.cookie =/^[^=]+/.exec(c[i])[0]+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; }


No sé por qué la primera respuesta votada no funciona para mí.

Como decía esta respuesta :

No existe una solución 100% para eliminar las cookies del navegador.

El problema es que las cookies se identifican únicamente no solo por su clave "nombre" sino también por su "dominio" y "ruta".

Sin conocer el "dominio" y la "ruta" de una cookie, no puede eliminarla de manera confiable. Esta información no está disponible a través de document.cookie de JavaScript. ¡Tampoco está disponible a través del encabezado de la cookie HTTP!

Así que mi idea es agregar un control de versión de Cookie con el conjunto completo de configuración, obtención y eliminación de cookies:

var cookie_version_control = ''---2018/5/11''; function setCookie(name,value,days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name+cookie_version_control + "=" + (value || "") + expires + "; path=/"; } function getCookie(name) { var nameEQ = name+cookie_version_control + "="; 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 removeCookie(name) { document.cookie = name+cookie_version_control+''=; Max-Age=-99999999;''; }


Pensé que compartiría este método para borrar las cookies. Quizás pueda ser útil para alguien más en algún momento.

var cookie = document.cookie.split('';''); for (var i = 0; i < cookie.length; i++) { var chip = cookie[i], entry = chip.split("="), name = entry[0]; document.cookie = name + ''=; expires=Thu, 01 Jan 1970 00:00:01 GMT;''; }


Por lo que sé, no hay forma de eliminar las cookies en el dominio. Puede borrar una cookie si conoce el nombre y si la secuencia de comandos está en el mismo dominio que la cookie.

Puede establecer el valor en vacío y la fecha de caducidad en algún lugar del pasado:

var mydate = new Date(); mydate.setTime(mydate.getTime() - 1); document.cookie = "username=; expires=" + mydate.toGMTString();

Hay un excelente artículo aquí sobre la manipulación de cookies utilizando javascript.


Puede obtener una lista mirando la variable document.cookie. Eliminarlos a todos es solo cuestión de hacer un bucle sobre todos ellos y eliminarlos uno por uno.


Si tiene acceso al complemento jquery.cookie , puede borrar todas las cookies de esta manera:

for (var it in $.cookie()) $.removeCookie(it);


Una respuesta influenciada tanto por la segunda respuesta aquí como por W3Schools

document.cookie.split('';'').forEach(function(c) { document.cookie = c.trim().split(''='')[0] + ''=;'' + ''expires=Thu, 01 Jan 1970 00:00:00 UTC;''; });

Parece estar trabajando

edit: wow, casi exactamente lo mismo que lo interesante de Zach, cómo los puso uno al lado del otro.

Edición: nvm que aparentemente fue temporal.


Y aquí hay uno para borrar todas las cookies en todas las rutas y todas las variantes del dominio (www.mydomain.com, mydomain.com, etc.):

(function () { var cookies = document.cookie.split("; "); for (var c = 0; c < cookies.length; c++) { var d = window.location.hostname.split("."); while (d.length > 0) { var cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + ''=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain='' + d.join(''.'') + '' ;path=''; var p = location.pathname.split(''/''); document.cookie = cookieBase + ''/''; while (p.length > 0) { document.cookie = cookieBase + p.join(''/''); p.pop(); }; d.shift(); } } })();


Jquery:

var cookies = $.cookie(); for(var cookie in cookies) { $.removeCookie(cookie); }

vainilla js

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 }


//Delete all cookies 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:01 GMT;'' + ''path='' + ''/;'' + ''domain='' + window.location.host + '';'' + ''secure=;''; } }


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

Tenga en cuenta que este código tiene dos limitaciones:

  • No eliminará las cookies con el HttpOnly indicadores HttpOnly , ya que la bandera HttpOnly desactiva el acceso de Javascript a la cookie.
  • No eliminará las cookies que se han establecido con un valor de Path . (Esto es a pesar del hecho de que esas cookies aparecerán en document.cookie , pero no puede eliminarlas sin especificar el mismo valor de Path con el que se configuró).