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:
El cliente envía una petición al servidor.
El servidor responde con una petición HTTP con el header Set-Cookie y el valor de la Cookie.
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.
Top comments (0)