Sobes.tech
Junior

¿Cómo configurar las cookies para que se eliminen después de 3 días?

sobes.tech AI

Respuesta de la IA

Para establecer una "cookie" con eliminación en 3 días, se puede usar el atributo expires o max-age.

  • expires: Establece una fecha y hora específicas de vencimiento. La fecha debe estar en formato GMT (hora universal coordinada).

  • max-age: Establece la cantidad de segundos después de los cuales la "cookie" debe expirar, comenzando desde el momento de su establecimiento. Es una forma más flexible y recomendada.

Ejemplo en JavaScript usando max-age:

// Obtenemos la hora actual en milisegundos
const now = new Date().getTime();

// Calculamos el tiempo en milisegundos para 3 días
const threeDaysInMilliseconds = 3 * 24 * 60 * 60 * 1000;

// Calculamos el tiempo de expiración en milisegundos
const expirationTime = now + threeDaysInMilliseconds;

// Creamos un objeto Date para la hora de expiración
const expirationDate = new Date(expirationTime);

// Establecemos la cookie con el atributo expires, convirtiendo la fecha a formato GMT
//document.cookie = "myCookie=myValue; expires=" + expirationDate.toUTCString();

// O usamos max-age (recomendado)
const threeDaysInSeconds = 3 * 24 * 60 * 60;
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds;

// Atributos adicionales para mejores prácticas:
// secure - la cookie solo se envía por HTTPS
// HttpOnly - la cookie no es accesible a través de document.cookie (protección contra XSS)
// path - ruta para la cual la cookie es válida
// domain - dominio para la cual la cookie es válida
// SameSite - evita que la cookie se envíe en solicitudes entre sitios (recomendado: Strict, Lax)
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds + "; path=/; secure; SameSite=Lax";

Comparación entre expires y max-age:

Atributo Descripción Formato Ventajas Desventajas
expires Indica una fecha específica de vencimiento. Fecha en formato GMT. Compatibilidad con navegadores antiguos. Depende del tiempo exacto en la máquina del cliente.
max-age Indica la cantidad de segundos hasta la expiración. Cantidad de segundos. No depende del tiempo exacto. Más flexible. Recomendado. Puede no ser completamente soportado en navegadores antiguos.

Además, las "cookies" también pueden establecerse en el lado del servidor, por ejemplo, usando la cabecera Set-Cookie.

Set-Cookie: myCookie=myValue; Max-Age=259200; Path=/; Secure; SameSite=Lax

Aquí, Max-Age=259200 corresponde a 3 días en segundos (3 * 24 * 60 * 60).