Simplemente no puedo creer que esto sea tan difícil de determinar.
Incluso después de haber leído los RFC, no me queda claro si un servidor en subdominio.ejemplo.com puede establecer una cookie que se pueda leer con example.com.
subdominio.ejemplo.com puede establecer una cookie cuyo atributo de dominio es .ejemplo.com. RFC 2965 parece indicar explícitamente que dicha cookie no se enviará a example.com, pero también dice que si configura Domain = example.com, se antepone un punto, como si dijera .example.com. En conjunto, esto parece decir que si example.com devuelve establece una cookie con Domain = example.com, ¡no recupera esa cookie! Eso no puede estar bien.
¿Alguien puede aclarar cuáles son realmente las reglas?
Respuestas:
Citando del mismo RFC2109 que lees:
Entonces
subdomain.example.com
puede configurar una cookie para.example.com
. Hasta aquí todo bien.Entonces, ¿tenemos una coincidencia de dominio?
Pero ahora
example.com
no coincidiría.example.com
con el dominio según la definición. Perowww.example.com
(o cualquier otro "nombre no vacío" en el dominio) lo haría. Este RFC está en teoría obsoleto por RFC2965 , que dictaba cosas sobre forzar un punto líder para dominios en lasSet-Cookie2
operaciones.Más importante, como lo señaló @Tony, es el mundo real. Para ver lo que los agentes de usuario reales están haciendo, vea
y
Para ponerlo en perspectiva en lo que los sitios reales están haciendo, trata de jugar con
wget
el uso--save-cookies
,--load-cookies
y--debug
para ver lo que está pasando.Probablemente descubrirá que, de hecho, la mayoría de los sitios están utilizando alguna combinación de
Set-Cookie
la especificación RFC anterior con valores de "Host", implícitamente sin un punto inicial (como lo hace twitter.com ) o estableciendo valores de Dominio (con un punto inicial) y redirigiendo a un servidor comowww.example.com
(como lo hace google.com ).fuente
y.z
y (2) el agente de usuario implementa RFC 6265.Si el navegador implementa RFC 6265 , lo que cualquier navegador moderno debería estar haciendo en este punto, entonces un conjunto de cookies
.example.com
tendrá el punto inicial ignorado (sección 5.2.3), y la cookie se enviará al dominio simple y a todos subdominiosNo confíe en este comportamiento si tiene tráfico significativo de navegadores antiguos; este RFC solo data de 2011.
fuente
No debería ser posible. Sin embargo, como dijiste, dado que este no es un estándar ampliamente documentado, depende de qué pieza de software estés usando.
La mayoría de los navegadores modernos se adhieren a un "modelo de seguridad web" definido. El modelo gobierna efectivamente el comportamiento de los navegadores con respecto a la seguridad, en cosas como las cookies (específicamente cómo se enviarán de regreso a un sitio web determinado). El modelo también tiene la regla de que "los navegadores no envían cookies a los nombres de dominio que no los configuraron".
Dicho esto, domain.com debería poder establecer cookies para js.domain.com. js.domain.com, sin embargo, solo puede establecer cookies por sí mismo. Pero todo esto depende de qué navegador esté utilizando.
fuente