secure cookie age http browser http-headers

http - age - set cookie firefox



Varios encabezados de conjunto de cookies en HTTP (3)

Se supone que la respuesta está en draft-ietf-httpstate-cookie .

Estoy escribiendo una clase pequeña que actúa como un cliente HTTP muy básico. Como parte de un proyecto en el que estoy trabajando, lo estoy haciendo consciente de las cookies. Sin embargo, no me queda claro qué sucede cuando mi cliente recibe múltiples encabezados "Set-Cookie" con la misma clave, pero se establecen diferentes valores.

Por ejemplo,

Set-Cookie: PHPSESSID=abc; path=/ Set-Cookie: PHPSESSID=def; path=/ Set-Cookie: PHPSESSID=ghi; path=/

¿Cuál de estos se supone que es el valor para PHPSESSID? Esto generalmente termina cuando llamas a session_start () y luego a session_regenerate_id () en la misma página. Cada uno establecerá su propio encabezado. Todos los navegadores parecen estar de acuerdo con esto, pero parece que mi cliente no puede elegir el correcto.

¡¿Algunas ideas?!


RFC 6265 establece:

Los servidores NO DEBEN incluir más de un campo de encabezado Set-Cookie en la misma respuesta con el mismo nombre de cookie.

Por lo tanto, me preocuparía mucho si su servicio envía múltiples encabezados Set-Cookie con la misma clave. Especialmente porque he visto que los agentes de usuario y los proxies se comportan inesperadamente, a veces tomando el valor del primer encabezado, a veces reordenando los encabezados.

Como cliente, el comportamiento típico del agente de usuario parece ser tomar el valor del último encabezado. El RFC alude a ese comportamiento con esta afirmación:

Si el agente de usuario recibe una nueva cookie con el mismo nombre de cookie, dominio-valor y valor de ruta como una cookie que ya ha almacenado, la cookie existente se desaloja y se reemplaza con la nueva cookie.


RFC 6265 sección 4.1.2 establece:

Si el agente de usuario recibe una nueva cookie con el mismo nombre de cookie,
domain-value, y path-value como una cookie que ya ha sido almacenada,
la cookie existente se desaloja y se reemplaza con la nueva cookie.
Tenga en cuenta que los servidores pueden eliminar las cookies enviando un agente de usuario a
nueva cookie con un atributo Expires con un valor en el pasado.

Así que procesaría los encabezados en orden y los sobrescribiría si hubiera un duplicado. Entonces, en su caso, tendría solo un PHPSESSID = ghi.