Recuérdame la próxima vez: sesiones y cookies
Antes aprendimos que HTTP es olvidadizo, así que nos trata como un visitante nuevo en cada petición. Y sin embargo, una vez inicias sesión, sigues conectado un buen rato. ¿Cómo te reconoce un servidor que olvida cada vez? El secreto está en un pequeño pase.
Olvidadizo significa que la sesión se cae
Antes aprendimos que HTTP es olvidadizo.
Cuando una petición termina, nos olvida del todo.
Así que cuando pedimos de nuevo,
nos trata como un visitante nuevo.
Eso plantea algo extraño.
Iniciamos sesión una sola vez,
¿por qué seguimos conectados un buen rato?
Si olvida cada vez,
deberíamos iniciar sesión en cada visita.
Pulsa el botón de visita. El servidor olvidadizo olvida cada vez, así que la sesión se cae en cada visita y tienes que volver a entrar.
Como viste, es demasiado incómodo.
Iniciar sesión en cada visita
nos agotaría enseguida.
Pero no podemos pedirle al servidor
que memorice a cada invitado.
Simplemente hay demasiados.
Así que usamos un truco listo.
En vez de que el servidor memorice,
le entrega al invitado un pequeño boleto.
El servidor entrega un pequeño pase
En la primera visita
el servidor le da al invitado un pequeño boleto.
A este boleto lo llamamos cookie.
El boleto lleva un número escrito.
Algo como "eres el invitado número 7."
Piensa en la pulsera
o el sello de entrada de un parque de atracciones.
Si el servidor guarda solo ese número,
no necesita memorizar a cada uno de los muchos invitados.
Ahora en la mano del invitado
hay un pase con un número.
El servidor anota ese número,
ligado a este invitado.
Lo clave es
que el invitado lleva el pase consigo.
El servidor no lo memoriza todo;
el invitado guarda su propio número.
Entonces, ¿cuándo debe sacarse
y mostrarse de nuevo este pase?
Muestra el pase en cada visita
El invitado que recibió el pase
simplemente lo guarda en un bolsillo.
Luego, la próxima vez que pide al servidor,
muestra ese pase junto con la petición.
Diciendo: "Soy el invitado número 7."
Lo enseña en cada visita.
Es como escribir el número
en una esquina del papel de la petición.
Así que con solo leer la petición, el servidor
puede saber al instante quién la envió.
Pulsa el botón de visita. El invitado muestra el número del pase junto con la petición, cada vez.
Ahora cada vez que el invitado pide,
envía el mismo número con ello.
Desde el lado del servidor,
el número llega a la mano cada vez.
Siendo olvidadizo, no puede memorizar al invitado,
pero como el número viaja con la petición, no pasa nada.
Entonces, ¿qué hace el servidor
cuando ve ese número?
Puede compararlo con
la lista que anotó, ¿verdad?
¡Ah, esa persona! Te reconoce
Cuando llega el número del pase,
el servidor abre la lista que guardó.
"¿Quién es el número 7?", busca.
Cuando encuentra el 7 en la lista,
te reconoce: "¡Ah, esa persona!"
Mantener este hilo de que eres el mismo invitado
entre visitas
es justamente la sesión.
Gracias a ella, la sesión no se cae
y sigue de corrido.
Toca el número del pase que llegó. El servidor lo encuentra en la lista, reconoce "¡Ah, esa persona!" y mantiene la sesión.
Era un servidor olvidadizo,
y ahora nos reconoce con facilidad.
El truco no es que el servidor memorizara,
sino que el invitado llevó el pase.
El servidor solo compara número con lista,
así que maneja muchos invitados sin esfuerzo.
Pero hay una cosa
que debemos cuidar.
Si cualquiera con el número correcto pasa,
¿qué pasa si alguien recoge el pase de otro?
Resumamos
Reunido en una línea, es esto.
HTTP es olvidadizo y nos trata como un visitante nuevo cada vez.
El servidor emite un pequeño pase, una cookie.
El invitado muestra ese pase en cada visita.
El servidor lee el número y dice: "¡Ah, esa persona!"
Mantener el hilo de que es el mismo invitado es la sesión.
Gracias a ella, no tienes que iniciar sesión otra vez cada vez.
El recordar se le deja al pase del invitado,
y el servidor solo compara el número.
Toca los puntos clave en orden para repasar. (lo olvidadizo es el problema → emitir un pase (cookie) → mostrarlo en cada visita → ¡ah, esa persona! (sesión))
Ahora sabes cómo el servidor
nos reconoce de nuevo.
Pero si solo coincide el número del pase,
si de verdad eres tú
aún no se ha comprobado.
¿Quien lleva el número
es realmente esa persona?
¿Y si alguien lo intercepta?
Sigamos esa historia de comprobar la confianza
juntos en la próxima área.