2011-04-16 14 views
12

Estoy en un sitio externo, y estoy tratando de eliminar la cookie a través de javascript.No se puede eliminar la cookie de javascript

hice lo siguiente en la consola:

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

deleteAllCookies() 

que se supone que instalar la cookie documento expira en 1970

Pero después de eso, llamo

document.cookie.split(";") 

Las cookies están aparentemente intactos. ¿Alguna idea de por qué?

PD: el código de seguridad es de stackoverflow Clearing all cookies with JavaScript

+1

Sólo puede eliminar las cookies que se encuentran en el dominio que les está eliminando de. No puede eliminar las cookies entre dominios. –

+0

¿Has depurado con un error de fuego? ¿Cuál es el valor de document.cookie? –

+0

Publique sus datos de cookies. Me está funcionando aquí: http://jsfiddle.net/WbGYV/1/ – Calum

Respuesta

16

que tenía el mismo problema. Descubrí que la cookie se configuró en un subdominio vacío, p. el dominio de la cookie era ".dominio.com" y mi sitio web estaba alojado en "sub.domain.com".

Para solucionar he añadido el dominio de la cookie al valor ajustado

document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.domain.com"; 

Para ver qué dominio de la cookie se establece en, en Chrome, herramientas dev abiertos -> Recursos -> Galletas y mirar los campos de dominio .

27

Acabo de toparme con este problema y finalmente lo resolví. Es muy probable que su cookie no se elimine porque cuando establece el nuevo valor, debe coincidir con la ruta y el dominio de la cookie original que está tratando de eliminar.

En otras palabras:

document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=[something];" 

que "algo" valor necesita alinearse con lo que las cookies existentes han establecido.

Los depuradores de JS pueden no proporcionarle detalles sobre la ruta y el dominio, pero será obvio cuál no coincidirá si busca el valor de la cookie existente en la configuración de Chrome-> o similar panel en Firefox/Safari/IE.

Avísame si eso ayuda.

+1

Encontré este problema en IE y Edge. Lo mejor es siempre establecer la ruta de acceso a algo, porque el valor predeterminado será la página que establece la cookie. Por lo tanto, si intenta caducar en una página diferente, la ruta no coincidirá y no caducará. en IE y Edge, parece ocultar la caducidad y la ruta desde el valor de document.cookie, por lo que no puede derivar dónde se estableció la cookie mirando el valor. si es necesario, guarde la ruta de la página de configuración en el valor de la cookie para poder sacarla más tarde. o siempre agregue "; path = /;" al valor de la cookie. luego caducará desde cualquier página. –

+0

Obras. Mejor solución. – Sibidharan

+0

Ahorré mi tiempo. Gracias :) –

0

Estaba trabajando en un bookmarklet del navegador para eliminar las cookies del dominio actual, tuve el mismo problema, mi problema era que tampoco estaba usando el dominio. Aquí está mi valor con el tiempo bookmarklet:.

javascript: (function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=." + location.host.split('.').slice(-2).join(".") +";path=/"); }); })(); 

Tenga en cuenta que sustituyo "domain.com" con location.host.split ('') rebanada (-2) .join ("") para que yo obtener siempre el nombre de dominio sin subdominios, es decir, mail.google.com se convertiría en google.com. al establecer caducidad de cookies debemos ignorar el subdemain (al menos en mi caso fue el caso.

0

Clear session cookies in ie11?

puede ser el enlace anterior puede dar una ayuda

Sólo tiene que ejecutar el código JavaScript, como a continuación

document.execCommand("ClearAuthenticationCache") 

Lo intenté y La cookie fue despejada.

0

Tuve un problema similar al intentar eliminar ciertas cookies. A veces esto funcionó:

document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;';

... ya veces no lo hizo.

Después de mirar en el Inspector de Chrome (pestaña Aplicación -> Barra lateral de almacenamiento -> Cookies) Noté que algunas cookies se configuraron con diferentes dominios. Ejemplo:

.mydoamin.com 
sub.mydomain.com 

Entonces, mi solución fue crear una función genérica que elimine la cookie de todos los dominios.

var deleteCookie = function(name) { 
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=.mydomain.com;'; 
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=sub.mydomain.com;'; 
}; 

Cuestiones relacionadas