Sobes.tech
Junior

Hogyan állíthatók be a cookie-k a böngészőben?

sobes.tech MI

Válasz az MI-től

A böngészőben a cookie-kat többféleképpen lehet beállítani.

  1. HTTP fejléc Set-Cookie segítségével a szerverről. Ez a fő módszer a cookie-k beállítására, amely a szerver oldalán történik. A szerver küld egy Set-Cookie fejlécet a böngészőnek, amely utasítja a böngészőt, hogy tároljon egy adott kulcs-érték párt.

    Példa szerver válaszra:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Set-Cookie: username=johndoe; Expires=Thu, 21 Dec 2023 12:00:00 GMT; Path=/; Secure; HttpOnly
    Set-Cookie: settings=theme=dark&lang=en; Path=/
    

    A Set-Cookie fejléc paraméterei:

    • name=value: A cookie neve és értéke. Kötelező.
    • Expires=<dátum>: A cookie lejárati dátuma és ideje. Ha nem adja meg, akkor munkamenet cookie lesz, és a böngésző bezárásakor törlődik. Dátum formátuma RFC 1123.
    • Max-Age=<másodperc>: A cookie maximális élettartama másodpercben. Felülírja az Expires értékét.
    • Domain=<domain>: A domain, amelyhez a cookie tartozik. Alapértelmezés szerint az aktuális domain, de nem tartalmaz aldomainokat.
    • Path=<útvonal>: Az útvonal a szerveren, ahol a cookie elérhető. Alapértelmezett a gyökér /.
    • Secure: Jelző, hogy a cookie csak HTTPS-en keresztül küldhető.
    • HttpOnly: Jelző, hogy a cookie nem érhető el JavaScript-ből document.cookie-n keresztül. Véd a XSS támadások ellen.
    • SameSite=<mód>: A cookie küldését szabályozza cross-site kérések esetén. Értékek: Strict, Lax (alapértelmezett), None.
  2. JavaScript oldalán a kliens oldalon. Az document.cookie objektummal lehet cookie-kat olvasni, írni és törölni.

    Cookie írása:

    // Egyszerű cookie beállítása
    document.cookie = "username=johndoe";
    
    // Cookie beállítása expires, path, secure és SameSite=Lax opciókkal
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 nap
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Cookie olvasása:

    // A `document.cookie` összes elérhető cookie-t tartalmazó stringet ad vissza "kulcs1=érték1; kulcs2=érték2; ..." formátumban
    console.log(document.cookie);
    

    Cookie törlése: A cookie törléséhez a lejárati dátumot a múltba kell állítani.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // expires a múltba állítva
    

    Fontos, hogy törléskor ugyanazokat a path és domain paramétereket kell megadni, mint a létrehozáskor. A SameSite értékének is egyeznie kell a helyes törléshez.

  3. Harmadik fél JavaScript könyvtárak segítségével. Léteznek olyan könyvtárak, amelyek megkönnyítik a cookie-k kezelését (pl. js-cookie). Ezek egy könnyebb API-t kínálnak a cookie-k beállítására, olvasására és törlésére.

    js-cookie példával:

    // Könyvtár betöltése
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Cookie beállítása
    Cookies.set('username', 'johndoe');
    
    // Cookie beállítása opciókkal
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires napokban
    
    // Cookie olvasása
    const username = Cookies.get('username'); // 'johndoe' vagy undefined
    const allCookies = Cookies.get(); // összes cookie-t objektumként adja vissza
    
    // Cookie törlése
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // megadni a path-et, ha az volt a beállításkor