¿Qué significa el prefijo de punto en el dominio de la cookie?

93

ingrese la descripción de la imagen aquí

¿Cuál es la diferencia entre local.test.comy .local.test.com? La captura de pantalla es de Chrome.

destripador234
fuente
1
Aquí hay una buena reseña: erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains
user2864740
En un comentario del usuario 2864740 el 26 de septiembre de 2016 a las 16:44 - El enlace está muerto, aparentemente el dominio erik.io se ha transferido a otro usuario o registrador de dominios.
qxotk

Respuestas:

58

local.test.comse utilizará para el dominio, mientras que .local.test.comtambién se utilizará para subdominios.

JoRouss
fuente
11
Por lo tanto local.test.com, no se aplicará a x.local.test.com, pero .local.test.comse aplica tanto a local.test.comya x.local.test.com?
ripper234
29
Creo que esto es incorrecto. Las cookies se comparten con todos y cada uno de los subdominios posteriores, con o sin un punto. Puede pensar en los subdominios como cookies "heredadas" de sus padres. Por lo tanto, configurar una cookie en example.com, la configura en blog.example.com y my.blog.example.com. La configuración de una cookie en blog.example.com la configura en this.is.my.blog.example.com y en todos los subdominios intermedios. Pero, al igual que la herencia, lo contrario no es cierto. La configuración de una cookie en blog.example.com no la configura en example.com.
geddski
6
Dicho esto, PUEDE limitar la cookie solo al host al no configurar el dominio de la cookie en absoluto (o configurar una cadena vacía). Eso, extrañamente, establecerá la cookie solo para el host (example.com) y no para ninguno de sus subdominios.
geddski
8
Para aclarar en base a otra respuesta, el punto solía marcar la diferencia, pero ahora no lo hace. La cookie se enviará a cualquier subdominio del dominio especificado, con o sin el punto inicial. Lo que realmente controla si se pasa a los subdominios es si establece un dominio en la cookie o no. Si no configura ningún dominio, la cookie solo se enviará al dominio exacto que la emitió. Nunca se enviará a dominios principales menos específicos (por ejemplo, "local.test.com" no se incluirá en las solicitudes a "test.com"), y solo se enviará a subdominios coincidentes si establece un valor de dominio.
Triynko
4
@Triynko, el punto marca la diferencia cuando está intentando actualizar una cookie. No he logrado aislar todas las reglas, pero he visto que los resultados varían según la presencia del punto inicial o no, y no es sencillo. El funcionamiento de esto varía según el navegador y no todo es intuitivo. Controlar si un nombre de cookie tiene o no un punto inicial en el navegador no es la tarea de programación más simple que he realizado.
DanAllen
83

El punto inicial significa que la cookie también es válida para subdominios; sin embargo, las especificaciones HTTP recientes (RFC 6265) cambiaron esta regla, por lo que los navegadores modernos no deberían preocuparse por el punto inicial. Es posible que el navegador antiguo necesite el punto que implementa el RFC 2109 obsoleto.

RFC 6265 sección 4.1.2.3

Por ejemplo, si el valor del atributo Dominio es "ejemplo.com", el agente de usuario incluirá la cookie en el encabezado de la cookie cuando realice solicitudes HTTP a example.com, www.example.com y www.corp.example. com. (Tenga en cuenta que un% x2E (".") Inicial, si está presente, se ignora aunque ese carácter no esté permitido, pero un% x2E (".") Final, si está presente, hará que el agente de usuario ignore el atributo. )

Timido
fuente
1
El RFC tiene fecha de abril de 2011. Tanto IE8 como IE9 se publicaron inicialmente antes de esa fecha y, lamentablemente, todavía se utilizan. Entonces, mi mejor suposición (no lo intenté) es que necesitan el punto inicial. ¿Alguien sabe de una estimación de cuántos navegadores en la naturaleza todavía se ejecutan en el antiguo RFC?
BlaM
erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains recomienda usar un punto inicial para obtener la mejor compatibilidad cuando desee incluir subdominios. Este requisito de compatibilidad seguirá disminuyendo. (No se requiere para 6255, pero es obligatorio y con el mismo resultado final que para 2109.)
user2864740
12

Del artículo La guía definitiva para los dominios de cookies y por qué un prefijo www hace que su sitio web sea más seguro :

Conclusión

Aunque las definiciones son algo diferentes, podemos simplificarlo para cualquiera de estas implementaciones como:

  • Cuando no se establece ningún dominio en la cookie, la cookie solo debe coincidir con el nombre de host exacto de la solicitud. [NOTA: esto es diferente de devolver un Set-Cookie con un dominio sin un punto!] No hay subdominios, no hay coincidencias parciales. Esto significa simplemente no incluir el atributo de dominio; no es válido establecer un atributo de dominio vacío. Desafortunadamente, Internet Explorer parece tratar esto como el nombre de host junto con cualquier subdominio .

  • Al configurar un dominio en la cookie, la opción segura es que esté precedido por un punto, como .erik.io. La cookie coincidirá con todos los subdominios.

  • Establecer un dominio de cookie sin un punto anterior, como erik.io, no es válido en las implementaciones de RFC 2109 y producirá el mismo comportamiento que con un punto anterior en otras implementaciones. No hay forma de restringir una cookie a un dominio específico establecido explícitamente, sin que se incluyan subdominios.

Otras observaciones útiles:
  • En todas las RFC, un dominio de cookie especificado debe coincidir con el nombre de host actual, según la coincidencia normal. Establecer una cookie para www.erik.io en una respuesta de erik.io no es válido, ya que una cookie con dominio www.erik.io no coincide con erik.io, la primera es más específica.

  • En RFC 6265, los dominios se escriben explícitamente en minúsculas al analizar el encabezado Set-Cookie.

usuario2864740
fuente
1

El punto inicial en ".local.test.com" es cómo Chrome ve las cookies con un conjunto de "Dominio = local.test.com" (o un "Dominio = .local.test.com", que es el mismo).

Definiciones de conjunto de cookies sin "Dominio = algo" visualiza el dominio (= host) sin un punto inicial.

Por lo tanto, el punto inicial en Chrome no refleja si se usó o no un punto inicial del servidor, sino si esa cookie tenía un "Dominio = algo" en su definición del servidor. (Y si así fuera, la cookie también se enviará a los subdominios).

Al menos esto es lo que muestran mis pruebas. Chrome debería hacer esto más fácil de leer, por ejemplo, ver la cadena exacta que definió la cookie y cuándo se recibió.

Kjetil S.
fuente