Sobes.tech
Junior

Jak nastavit cookies v prohlížeči?

sobes.tech AI

Odpověď od AI

Ukládání cookie v prohlížeči lze provést několika způsoby.

  1. Pomocí HTTP hlavičky Set-Cookie ze serveru. Toto je hlavní metoda pro nastavení cookie, která se provádí na straně serveru. Server pošle prohlížeči hlavičku Set-Cookie, která instructs prohlížeč, aby si uložit určitou dvojici klíč-hodnota.

    Příklad odpovědi HTTP ze serveru:

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

    Parametry hlavičky Set-Cookie:

    • name=value: Jméno a hodnota cookie. Povinné.
    • Expires=<datum>: Datum a čas expirace cookie. Pokud není uvedeno, je cookie relace a smaže se při zavření prohlížeče. Formát data RFC 1123.
    • Max-Age=<sekundy>: Maximální doba života cookie v sekundách. Má přednost před Expires.
    • Domain=<doména>: Doména, pro kterou je cookie dostupná. Výchozí je aktuální doména (ale ne poddomény).
    • Path=<cesta>: Cesta na serveru, pro kterou je cookie dostupná. Výchozí je kořenová cesta /.
    • Secure: Příznak, který označuje, že cookie má být odesílána pouze přes HTTPS.
    • HttpOnly: Příznak, který označuje, že cookie není přístupná přes JavaScript document.cookie. Chrání před XSS útoky.
    • SameSite=<mód>: Řídí odesílání cookie při cross-site požadavcích. Možné hodnoty: Strict, Lax (výchozí), None.
  2. Pomocí JavaScriptu na straně klienta. Pomocí objektu document.cookie lze číst, zapisovat a mazat cookie.

    Zápis cookie:

    // Nastavení jednoduché cookie
    document.cookie = "username=johndoe";
    
    // Nastavení 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`;
    

    Čtení cookie:

    // `document.cookie` vrací řetězec všech dostupných cookie ve formátu "key1=value1; key2=value2; ..."
    console.log(document.cookie);
    

    Mazání cookie: Pro odstranění cookie je třeba nastavit její datum expirace do minulosti.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // nastavit expires do minulosti
    

    Při mazání je důležité uvést stejné parametry path a domain (pokud byly nastaveny), jako při vytváření. SameSite musí také odpovídat pro správné odstranění.

  3. Pomocí externích JavaScript knihoven. Existují knihovny, které usnadňují práci s cookie (například js-cookie). Ty poskytují jednodušší API pro nastavování, získávání a mazání cookie.

    Příklad s js-cookie:

    // Připojení knihovny
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Nastavení cookie
    Cookies.set('username', 'johndoe');
    
    // Nastavení cookie s volbami
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires v dnech
    
    // Získání cookie
    const username = Cookies.get('username'); // Vrací 'johndoe' nebo undefined
    const allCookies = Cookies.get(); // Vrací objekt se všemi cookie
    
    // Odstranění cookie
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // Uvést path, pokud byl při nastavování