2011-07-29 16 views
13

La forma de eliminar cookies en javascript es establecer la fecha de caducidad en el pasado. Ahora, esto en realidad no elimina la cookie, al menos en Firefox. Simplemente significa que la cookie se eliminará al cerrar el navegador.* Realmente * eliminar cookies con javascript

Esto es un problema para nosotros: tenemos un producto que consiste en archivar páginas web de muchos sitios, con todo este contenido almacenado en nuestro servidor. Y para asegurarnos de que las páginas se procesen correctamente, también incluimos todas las js. Sin embargo, a menudo las cookies son establecidas por js, y dado que la página está almacenada en caché en nuestro servidor, estas cookies se configuran bajo nuestro dominio.

Así que con el tiempo las cookies de docenas de sitios archivados se acumulan bajo nuestro dominio. Y, finalmente, el encabezado Cookie excede la longitud máxima del contenido, lo que da como resultado un código de error HTTP 400.

Y como nuestros clientes se encuentran principalmente en entornos corporativos, nunca reinician sus máquinas o cierran sus navegadores: pueden dejarse encendidos durante meses. Entonces esta eliminación "suave" no funciona, al menos no confiablemente.

¿Hay alguna manera de eliminar físicamente las cookies dentro de la sesión en javscript? O, como alternativa, ¿hay alguna forma de evitar que se establezcan?

+0

¿Por qué los encabezados exceden la longitud máxima del contenido? – ninjagecko

+1

porque los sitios que un usuario está archivando establecen cookies bajo nuestro dominio.Cuantos más sitios se archiven, más cookies se establecen. Para ser más claro: un usuario vería una página archivada como esta: http://ourdoamin.com/page-from-archived-site.html. Por lo tanto, si thispage establece una cookie en js, se configura en ourdomain.com –

+0

Aclare que "los sitios que un usuario está archivando configuran cookies bajo nuestro dominio". Como probablemente sepa, es imposible que otros dominios configuren cookies en su dominio, por lo que deben estar utilizando iframes o algo así y * usted * debe estar configurando esas cookies, ¿no? ¿Qué pasa con solo usar una cookie? – ninjagecko

Respuesta

4

No es posible. Período. He estado luchando con esto por varias semanas sin encontrar una solución.

Quien haya inventado el getter/setter cookie debe ser% insert_painful_punishment_here%.

Particularmente Internet Exploder es una bestia cuando se trata de eliminar cookies. No puedo recordar el problema exacto, pero creo que se trata de https y nombres de cookies que contienen ;.

Todo lo que puedo ofrecer es una solución alternativa: envíe un cuerpo de respuesta con su respuesta 400, algo así como 'reinicie su navegador'.

+0

Ahora que es un muy idea prometedora - ¡gracias! –

0

Puede sobrescribir la cookie con una nueva.

+0

Pero entonces la cookie todavía existe, y aún contribuye a la longitud del encabezado Cookie, incluso si establece el contenido en ""; –

+0

Luego usa una cookie. – ninjagecko

3

Además de establecer la caducidad en el pasado, establezca el valor en una cadena vacía. Esto al menos reducirá el tamaño de la cookie de inmediato.

Creo que las cookies deberían eliminarse inmediatamente en todos los navegadores. Por ejemplo, cuando cierro la sesión de un sitio web, Firefox no requiere que cierre mi navegador para eliminar la cookie que muestra que estoy conectado al sitio. Si esto no sucede, le sugiero que investigue los errores de Firefox y posiblemente abra uno nuevo.

Mientras tanto, miraría mi servidor web y vería si es posible establecer la longitud máxima del contenido en algo más alto de lo que ya es.

+0

Sí, estamos haciendo esto, pero los nombres largos de cookies no ayudan :) –

-2

"Es porque no estamos usando iframes que tenemos este problema. La página en caché se está representando por nuestro servidor, por lo que cualquier cookies se establecen bajo nuestro dominio." -OP

Si no tiene ningún control sobre el código JavaScript que está estableciendo las galletas (que parece muy extraño, ¿por qué no tener el control?), Puede leer y vaciar la cookie constantemente, descargando los datos a otra base de datos más grande (preferiblemente del lado del servidor, o quizás del almacenamiento de cliente HTML5).

+0

Ah precioso, varios votos negativos sin explicación, cuando me dirigí específicamente a los problemas del OP ... (* se encoge de hombros * bueno) – ninjagecko

Cuestiones relacionadas