Sobes.tech
Junior

Ako nastaviť cookies v prehliadači?

sobes.tech AI

Odpoveď od AI

Nastavenie cookie v prehliadači je možné niekoľkými spôsobmi.

  1. Pomocou hlavičky Set-Cookie zo servera. Toto je hlavná metóda na nastavenie cookie, ktorá sa vykonáva na strane servera. Server odošle prehliadaču hlavičku Set-Cookie, ktorá instructs prehliadač, aby si uložiť určitú dvojicu kľúč-hodnota.

    Príklad odpovede HTTP zo servera:

    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=/
    

    Parametre hlavičky Set-Cookie:

    • name=value: Názov a hodnota cookie. Povinné.
    • Expires=<dátum>: Dátum a čas vypršania platnosti cookie. Ak nie je uvedené, je cookie relácia a vymaže sa pri zatvorení prehliadača. Formát dátumu je RFC 1123.
    • Max-Age=<sekundy>: Maximálna doba života cookie v sekundách. Má prednosť pred Expires.
    • Domain=<doména>: Doména, pre ktorú je cookie dostupná. Predvolená je aktuálna doména (ale nie poddomény).
    • Path=<cesta>: Cesta na serveri, pre ktorú je cookie dostupná. Predvolená je koreňová cesta /.
    • Secure: Príznak, ktorý označuje, že cookie má byť odoslaná iba cez HTTPS.
    • HttpOnly: Príznak, ktorý označuje, že cookie nie je dostupná cez JavaScript document.cookie. Chráni pred XSS útokmi.
    • SameSite=<mód>: Riadi odosielanie cookie pri cross-site požiadavkách. Možné hodnoty: Strict, Lax (predvolené), None.
  2. Pomocou JavaScriptu na strane klienta. Pomocou objektu document.cookie je možné čítať, zapisovať a mazať cookies.

    Zápis cookie:

    // Nastavenie jednoduchého cookie
    document.cookie = "username=johndoe";
    
    // Nastavenie cookie s `expires`, `path`, `secure` a `SameSite=Lax`
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 dní
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Čítanie cookie:

    // `document.cookie` vracia reťazec všetkých dostupných cookie vo formáte "key1=value1; key2=value2; ..."
    console.log(document.cookie);
    

    Vymazanie cookie: Pre odstránenie cookie je potrebné nastaviť jej dátum vypršania v minulosti.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // nastaviť expires v minulosti
    

    Pri vymazaní je dôležité uviesť tie isté parametre path a domain (ak boli nastavené), ako pri vytváraní. SameSite musí tiež zodpovedať pre správne vymazanie.

  3. Pomocou externých JavaScript knižníc. Existujú knižnice, ktoré uľahčujú prácu s cookie (napríklad js-cookie). Tieto poskytujú jednoduchšie API na nastavovanie, čítanie a mazanie cookie.

    Príklad s js-cookie:

    // Pripojenie knižnice
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Nastavenie cookie
    Cookies.set('username', 'johndoe');
    
    // Nastavenie cookie s možnosťami
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires v dňoch
    
    // Čítanie cookie
    const username = Cookies.get('username'); // Vráti 'johndoe' alebo undefined
    const allCookies = Cookies.get(); // Vráti objekt so všetkými cookie
    
    // Vymazanie cookie
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // Uviesť path, ak bol pri nastavovaní