Sobes.tech
Junior

Jak nastavit cookies tak, aby se mazaly po 3 dnech?

sobes.tech AI

Odpověď od AI

Pro nastavení "cookie" s odstraněním za 3 dny lze použít atribut expires nebo max-age.

  • expires: Určuje konkrétní datum a čas vypršení platnosti. Datum musí být ve formátu GMT (universální globální čas).

  • max-age: Určuje počet sekund, po kterých má "cookie" vypršet, počínaje okamžikem nastavení. Jedná se o flexibilnější a doporučený způsob.

Příklad v JavaScriptu s použitím max-age:

// Získáme aktuální čas v milisekundách
const now = new Date().getTime();

// Vypočítáme čas za 3 dny v milisekundách
const threeDaysInMilliseconds = 3 * 24 * 60 * 60 * 1000;

// Vypočítáme čas vypršení v milisekundách
const expirationTime = now + threeDaysInMilliseconds;

// Vytvoříme objekt Date pro čas vypršení
const expirationDate = new Date(expirationTime);

// Nastavíme cookie s atributem expires, převedeným na formát GMT
//document.cookie = "myCookie=myValue; expires=" + expirationDate.toUTCString();

// Nebo použijeme max-age (doporučeno)
const threeDaysInSeconds = 3 * 24 * 60 * 60;
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds;

// Další atributy pro lepší praxi:
// secure - cookie se odesílá pouze přes HTTPS
// HttpOnly - cookie není dostupná přes document.cookie (ochrana před XSS)
// path - cesta, pro kterou je cookie platná
// domain - doména, pro kterou je cookie platná
// SameSite - zabraňuje odesílání cookie při cross-site požadavcích (doporučeno: Strict, Lax)
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds + "; path=/; secure; SameSite=Lax";

Porovnání expires a max-age:

Atribut Popis Formát Výhody Nevýhody
expires Určuje konkrétní datum vypršení. Datum ve formátu GMT. Kompatibilní se staršími prohlížeči. Závisí na přesném čase na klientském zařízení.
max-age Určuje počet sekund do vypršení. Počet sekund. Není závislý na přesném čase. Flexibilnější. Doporučeno. Může být plně nepodporováno ve starších prohlížečích.

Také "cookie" mohou být nastaveny na straně serveru například pomocí hlavičky Set-Cookie.

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

Zde Max-Age=259200 odpovídá 3 dnům v sekundách (3 * 24 * 60 * 60).