Cookies: estado por encima de HTTP

Varios sitios, algunos con cookies, visitados varias veces. Para cada petición, el navegador mira su almacén: si tiene una cookie viva de ese sitio, envía Cookie; si no, el servidor puede responder con Set-Cookie. Sigue la decisión, los mensajes y el almacén.

Sitios

Cada sitio tiene una página (index.html) con objetos, que pueden estar en otro sitio (tercero). Un sitio que usa cookies asigna la cookie indicada al navegador que llega sin ella. Max-Age en segundos; vacío: cookie de sesión, se borra al cerrar el navegador.

Cookies que ya tenía el navegador

Filas de otros sitios en el almacén antes de la primera visita. No caducan en este escenario.

Visitas

Cada visita carga la página de un sitio t segundos después de la anterior. Marca si el navegador se cerró entre medias: las cookies de sesión se borran; las demás duran hasta su Max-Age.

Ejemplos

Practicar

Genera sitios y visitas aleatorios y oculta las cabeceras: para cada petición de la visita elegida, di si lleva Cookie y si la respuesta lleva Set-Cookie.

Vista

Exportar

Decisión en cada petición

Mensajes de la visita

El almacén de cookies antes y después de la visita

Lo que sabe cada servidor hasta esta visita

Dos cabeceras con dos papeles: la cookie le dice al servidor que es el mismo navegador (une las visitas); el Referer, desde qué página llega cada petición (les pone nombre). Sin cookie, dos peticiones anónimas; sin Referer, el mismo navegador pero sin saber de qué páginas.

Supuestos del modelo
  • HTTP no tiene estado: cada petición llega sin memoria de las anteriores. Las cookies ponen ese estado por encima: Set-Cookie en las respuestas, Cookie en las peticiones y un almacén gestionado por el navegador con una fila (sitio, nombre=valor, caducidad) por cookie.
  • Un sitio que usa cookies responde a una petición que llega sin su cookie con Set-Cookie: un identificador nuevo, solo en esa respuesta. El navegador guarda la fila y desde entonces envía Cookie en toda petición a ese sitio: los objetos incrustados, las visitas posteriores y también las peticiones hechas desde una página de otro sitio (cookie de terceros).
  • El almacén es por sitio: una cookie nunca se envía a otro sitio. En este modelo hay una cookie por sitio.
  • Con Max-Age=N la cookie vive N segundos desde que se recibió; al caducar, el navegador la borra y la petición siguiente llega sin ella, así que el servidor asigna un identificador nuevo. Sin Max-Age (ni Expires) es una cookie de sesión: se borra al cerrar el navegador.
  • Dentro de una visita se pide primero la página y después sus objetos en orden. Toda respuesta es 200 OK; la caché, la autorización (401) y los demás atributos de la cookie (Domain, Path, Secure, HttpOnly) quedan fuera del modelo. Las visitas son instantáneas.
  • El valor de la cookie es solo una clave: el estado real (sesión, carrito, qué páginas ha visitado un navegador) está en la base de datos del servidor. Una cookie identifica a un navegador en un equipo, no a una persona.