Sobes.tech
Junior

Kuidas seadistada küpsiseid, et need kustutataks pärast 3 päeva?

sobes.tech AI

Vastus AI-lt

3 päeva pärast kustutamiseks saab määrata "küpsise" expires või max-age atribuudid.

  • expires: Määrab konkreetse kuupäeva ja aja, millal "küpsis" lõpeb. Kuupäev peab olema GMT formaadis.

  • max-age: Määrab sekundite arvu, mille jooksul "küpsis" peaks lõppema, alates selle määramise hetkest. See on paindlikum ja soovitatav viis.

Näide JavaScriptis max-age kasutades:

// Saame praeguse aja millisekundites
const now = new Date().getTime();

// Arvutame 3 päeva aja millisekundites
const threeDaysInMilliseconds = 3 * 24 * 60 * 60 * 1000;

// Arvutame lõppemise aja
const expirationTime = now + threeDaysInMilliseconds;

// Loome Date objekti lõppamise ajaks
const expirationDate = new Date(expirationTime);

// Seadistame küpsise `expires` atribuudiga, mis on muudetud GMT formaati
//document.cookie = "myCookie=myValue; expires=" + expirationDate.toUTCString();

// Või kasutame `max-age` (soovitatav)
const threeDaysInSeconds = 3 * 24 * 60 * 60;
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds;

// Täiendavad atribuudid parema praktika jaoks:
// secure - küpsis saadetakse ainult HTTPS-i kaudu
// HttpOnly - küpsis ei ole document.cookie kaudu kättesaadav (kaitse XSS eest)
// path - tee, mille jaoks küpsis kehtib
// domain - domeen, mille jaoks küpsis kehtib
// SameSite - takistab küpsise saatmist cross-site päringutes (soovitatav: Strict, Lax)
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds + "; path=/; secure; SameSite=Lax";

Võrdlus expires ja max-age:

Atribuut Kirjeldus Formaat Eelistused Miinused
expires Määrab konkreetse lõppkuupäeva GMT formaadis kuupäev Ühilduv vanemate brauseritega Sõltub kliendi seadme aja täpsusest
max-age Määrab sekundite arvu kuni lõppkuupäevani Sekundid Ei sõltu aja täpsusest Võib olla osaliselt toetatud vanemate brauserite poolt

Samuti saab serveri poolt määrata "küpsiseid", näiteks Set-Cookie päise kaudu:

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

Siin Max-Age=259200 vastab 3 päevale sekundites (3 * 24 * 60 * 60).