2010-06-02 18 views
28

Usando Javascript Me gustaría obtener el valor domain para una cookie específica.¿Cómo obtener el valor del dominio para una cookie en Javascript?

¿Esto es posible? ¿Si es así, cómo?

Para aclarar: no estoy buscando el valor de la cookie. Estoy en "subdomain.domain.com" y necesito eliminar una cookie cuyo nombre se conoce, pero su valor de dominio es algo así como ".dominio.com". En resumen: me gustaría obtener el valor de ".dominio.com".

+1

La única manera que conozco de obtener los atributos de cookies (ruta de acceso, dominio, vencimiento, seguridad) es ajustarlos al valor cuando crea o modifica la cookie o su valor. – kennebec

Respuesta

35

Lo siento, todo lo que obtienes es lo que ves en document.cookie. Los metadatos de cookies como path, domain y expires no son visibles para el código del sitio (ni a JavaScript ni al servidor).

Para leer una cookie que está siendo sombreada por una cookie con un domain o path más específico, lo único que puede hacer es cargar una página para la cual la cookie más específica está fuera del alcance, y leer es desde allí.

Si, como usted dice, sólo tiene que quitar una cookie, lo que podría hacer es tratar de eliminar la cookie en cada posible nivel de especificidad, por ejemplo .:

document.cookie= 'foo=;domain=sub.domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 

y de manera similar con la variable path. Puede poner esto en un bucle anidado para cada ruta y parte de dominio, dividiendo en . para el dominio y / para la ruta.

+3

Así que, básicamente, se recomienda el bombardeo de alfombras. No puedo ver otra solución tampoco. :) – Wabbitseason

+0

¡Sí, esa es una buena manera de describirlo! – bobince

+0

¿Cómo lo hace la herramienta "Ver información de cookies" del desarrollador web de Firefox? Aparentemente, la información de dominio está ahí en alguna parte. – TARKUS

2

Solo puede acceder a las cookies desde el mismo dominio (esto incluye los subdominios). Obviamente, hacer lo contrario sería una preocupación de seguridad.

+1

Creo que eso no es del todo cierto. los subdominios pueden establecer cookies para un *. dominio principal, según tengo entendido: https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com – hwjp

+1

Correcto: una de las cosas que las cookies pueden hacer que localStorage no puede: puede establecerlo en el dominio principal. Sin embargo, determinar de forma programática en qué consiste el dominio "toplevel" que puede establecer es: puede establecer una cookie en amazon.com pero no en co.uk ya que es una SLD especial. Tendría que configurarlo en amazon.co.uk en su lugar. Entonces, no es tan simple como "solo los dos últimos segmentos". – Dtipson

Cuestiones relacionadas