DEV Community

Cover image for Cookies vs Sessions
Nahuel Segovia
Nahuel Segovia

Posted on

Cookies vs Sessions

Para poder adentrarnos en el tema de Cookies y Sessions es necesario saber que estas “herramientas” se crearon porque el protocolo HTTP es Stateless, lo que significa que no maneja estados almacenados entre cliente y servidor. Ahora, la diferencia entre Cookies y Sessions:

  • Cookies: Almacenan información en el navegador, es decir del lado del cliente.

  • Sessions: Almacenan información del lado del servidor, sin embargo las sesiones proporcionan una Cookie para indicarle al servidor que sesión estamos utilizando.

Explicando como funciona una Cookie

• El servidor es quien define cuando se almacena la información, esto es proporcionado al cliente mediante el header llamado Set-Cookie.

• Para que la Cookie se mantenga vigente se tiene que enviar en cada una de las solicitudes que se realizan al servidor.

Ahora, ¿Cómo y donde se crea una Cookie? Tenemos dos formas de hacerlo, se puede hacer tanto con Javascript, o simplemente haciendo una petición hacia el servidor.

Vamos a ver la segunda opción:

Alt Text

  1. El cliente envía una petición al servidor.

  2. El servidor responde con una petición HTTP con el header Set-Cookie y el valor de la Cookie.

  3. El cliente ahora puede realizar peticiones hacia el servidor utilizando la misma Cookie, por lo que el servidor va a reconocerlo en cada una de las peticiones.

Una Cookie cuenta con argumentos/parámetros que vamos a conocer a continuación:

• Domain:
◦ Define el host en donde es válida la Cookie, en el caso de que no sea especificada, el navegador lo definirá como el host actual

◦ El “.” nos sirve como un comodín para hacerle saber que la Cookie va a ser usada en todos los subdominios de este dominio, como mipagina.com y blog.mipagina.com o www.mipagina.com

• Expires: Nos define un tiempo de duración de la Cookie creada

• Path: Es el lugar desde donde puede ser usada/enviada la Cookie, básicamente sería el contexto en donde puede ser usada, tomemos de ejemplo el siguiente: path=/videos

◦ Podrá ser usada en todos los lugares donde el path empiece con /videos, /videos/usuario1, etc.

• Content: Es la lista de valores que son almacenados en la Cookie, un ejemplo podría ser usuario=”escritor”; logged_in=”1”

• HTTP Only Flag: Define si la Cookie puede ser enviada a través del protocolo HTTP, esto por ejemplo nos condicionaría al tratar de leer la Cookie a través de Javacript.

• Secure Flag: Solo se envía la Cookie a través de SSL, es decir HTTPS.

Explicando como funciona una Session

En primer lugar y como dije arriba, las sesiones necesitan de una Cookie para poder funcionar, y la diferencia también explicada arriba es que la sesión se almacena del lado del servidor, y puede ser guardad en memoria, en archivos o en una base de datos.

Esto puede ser creado a través del Backend, en Node puede ser creado con el módulo express-session, y en PHP lo más común es utilizar la variable global $_SESSION.

Discussion (0)