Sobes.tech
Junior

Kā iestatīt sīkdatnes pārlūkprogrammā?

sobes.tech AI

Atbilde no AI

Sīkdatņu iestatīšana pārlūkprogrammā ir iespējama vairākos veidos.

  1. Per HTTP galveni Set-Cookie serverī. Tas ir galvenais veids, kā iestatīt sīkfailu, kas notiek servera pusē. Serveris nosūta pārlūkprogrammai galveni Set-Cookie, kas instructrē pārlūku saglabāt noteiktu atslēgas-vertības pāri.

    Servera HTTP atbildes piemērs:

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

    Set-Cookie galvenes parametri:

    • name=value: sīkfaila nosaukums un vērtība. Obligāts parametrs.
    • Expires=<datums>: datums un laiks, kad sīkfails beidzas. Ja nav norādīts, sīkfails ir sesijas un tiek dzēsts pārlūka aizvēršanas brīdī. Datuma formāts - RFC 1123.
    • Max-Age=<sekundes>: sīkfaila derīguma laiks sekundēs. Ir prioritāte pār Expires.
    • Domain=<domenas>: domēns, kuram sīkfails ir pieejams. Parasti - pašreizējais domēns (bet ne subdomeni).
    • Path=<ceļš>: ceļš serverī, kuram sīkfails ir pieejams. Parasti - saknes ceļš /.
    • Secure: zīme, kas norāda, ka sīkfails jānosūta tikai caur HTTPS.
    • HttpOnly: zīme, kas norāda, ka sīkfails nav pieejams JavaScript document.cookie līmenī. Aizsargā pret XSS uzbrukumiem.
    • SameSite=< režīms>: pārvalda sīkfaila nosūtīšanu krustošajās pieprasījumos. Iespējamās vērtības: Strict, Lax (noklusējums), None.
  2. Izmantojot JavaScript klienta pusē. document.cookie objekts ļauj lasīt, rakstīt un dzēst sīkfailus.

    Sīkfaila rakstīšana:

    // Vienkārša sīkfaila iestatīšana
    document.cookie = "username=johndoe";
    
    // Sīkfaila iestatīšana ar expires, path, secure un SameSite=Lax
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 dienas
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Sīkfaila lasīšana:

    // document.cookie atgriež visu pieejamo sīkfailu virkni "key1=value1; key2=value2; ..."
    console.log(document.cookie);
    

    Sīkfaila dzēšana: Lai dzēstu sīkfailu, to nepieciešams iestatīt ar beigu datumu pagātnē.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // Iestatīt expires pagātnē
    

    Svarīgi, dzēšanas laikā norādīt tos pašus path un domain parametrus (ja tie bija iestatīti), kā arī SameSite vērtību, lai dzēšana būtu korekta.

  3. Izmantojot trešo pušu JavaScript bibliotēkas. Pastāv bibliotēkas, kas atvieglo sīkfailu darbu (piemēram, js-cookie). Tās nodrošina ērtāku API sīkfailu iestatīšanai, saņemšanai un dzēšanai.

    Piemērs ar js-cookie:

    // Bibliotēkas pievienošana
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Sīkfaila iestatīšana
    Cookies.set('username', 'johndoe');
    
    // Sīkfaila iestatīšana ar opcijām
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires dienās
    
    // Sīkfaila saņemšana
    const username = Cookies.get('username'); // Atgriež 'johndoe' vai undefined
    const allCookies = Cookies.get(); // Atgriež objektu ar visiem sīkfailiem
    
    // Sīkfaila dzēšana
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // Norādīt ceļu, ja tas bija iestatīts