2010-08-25 18 views
5

Hay dos dominios: a.example.com example.com¿Puedo obtener cookies solo del dominio de segundo nivel?

example.com es el dominio principal de a.example.com. Ahora ambos a.example.com y example.com pueden escribir una cookie llamada test_cookie. Ahora tenemos una página de a.example.com que utilizará javascript para leer el valor de cookie test_cookie. ¿Hay alguna manera de leer solo el conjunto de cookies en el dominio de a.example.com en lugar de example.com?


Tal vez mi pregunta era un poco confuso,

el objetivo que quiero lograr es: 1. Quiero escribir una función llamada readCookie para leer la cookie con el nombre test_cookie cuales : a. cuando hay una cookie: test_cookie bajo dominio example.com y no hay ninguna cookie test_cookie bajo dominio a.example.com, readCookie devuelve null b. cuando hay una cookie: test_cookie bajo dominio example.com y también una galleta test_cookie bajo dominio a.example.com, readCookie devuelve el valor de la cookie en el dominio a.example.com c. cuando hay ninguna cookie: test_cookie bajo exampler.com, pero hay una cookie test_cookie bajo dominio a.example.com, readCookie devuelve el valor de la cookie en el dominio a.example.com.

Respuesta

3

No es posible limitar una cookie a example.com -sólo configurando el parámetro domain. Sin embargo, en la mayoría de los navegadores, una cookie tendrá como valor predeterminado example.com, solo si no se proporciona domain. Desafortunadamente, en IE, de forma predeterminada, permite que los subdominios accedan a la cookie.

Es por eso que pone su sitio principal en www.example.com y no solo en example.com. Con un sitio en el dominio principal example.com, no puede mantener sus cookies separadas de manera confiable.

9

Eso depende de cómo se define la cookie, sobre todo si el atributo dominio se especifica qué valores ha (ver RFC 2965 – User Agent Role):

  • si dominio atributo no está presente, el agente de usuario asume la host actual; de lo contrario
  • si se ha establecido dominio atributo, su valor debe comenzar con una . como .example.com (si no es así, por ejemplo, example.com, conseguirá cambiado por el agente de usuario a .example.com).

Ahora el dominio de las cookies debe domain-match el dominio a ser enviado dentro de la solicitud. Y ese es el caso:

  • si cualquiera de los dominios son idénticos (en caso de que el parámetro dominio faltaba), o
  • si el valor especificado en el dominio de atributo deben ser un sufijo de la dominio.

Eso significa:

effective domain | example.com | a.example.com | foo.example.com | bar.a.example.com 
------------------+-------------+---------------+-----------------+------------------- 
     example.com |  ✓  |  ✗  |  ✗  |   ✗ 
    a.example.com |  ✗  |  ✓  |  ✗  |   ✗ 
    .example.com |  ✓  |  ✓  |  ✓  |   ✓ 
    .a.example.com |  ✗  |  ✓  |  ✗  |   ✓ 

Así que si quieres una galleta a sólo será válida para a.example.com, que o bien omite el dominio atributo o se especifica el dominio atributo con .a.example.com (que hará que la cookie válida para a.example.com, así como sus subdominios).

Cuestiones relacionadas