Sobes.tech
Junior

Brauzerdə kuki necə qurulur?

sobes.tech Süni İntellekt

AI-dan cavab

Brauzerdə kuki qurmaq üçün bir neçə üsul mövcuddur.

  1. Serverdən Set-Cookie HTTP başlığı vasitəsilə. Bu, kukinin qurulması üçün əsas üsuldur və server tərəfində həyata keçirilir. Server brauzerə Set-Cookie başlığı göndərir, bu da brauzerin müəyyən açar-dəyər cütlüyünü yadda saxlamasını təmin edir.

    Serverdən HTTP cavab nümunəsi:

    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 başlığının parametrləri:

    • name=value: Kukinin adı və dəyəri. Zəruri parametr.
    • Expires=<tarix>: Kukinin bitmə tarixi və vaxtı. Əgər göstərilməzsə, kuki sessiya kukisi olur və brauzer bağlandıqda silinir. Tarix formatı RFC 1123.
    • Max-Age=<saniyə>: Kukinin maksimum ömrü saniyə ilə. Expires üzərində prioritetə malikdir.
    • Domain=<domen>: Kukinin əlçatan olduğu domen. Əsasən cari domen, alt domenlər daxil deyil.
    • Path=<yol>: Serverdə kukinin əlçatan olduğu yol. Əsasən kök yol /.
    • Secure: Bayraq, kukinin yalnız HTTPS vasitəsilə göndərilməsini təmin edir.
    • HttpOnly: Bayraq, kukinin JavaScript vasitəsilə document.cookie ilə əlçatan olmamasını təmin edir. XSS hücumlarından qorunma.
    • SameSite=<mode>: Kukinin kross-sayt sorğularında göndərilməsini idarə edir. Dəyərlər: Strict, Lax (standart), None.
  2. İstifadəçi tərəfində JavaScript vasitəsilə. document.cookie obyekti vasitəsilə kukiləri oxumaq, yazmaq və silmək mümkündür.

    Kukinin yazılması:

    // Sadə kuki qurulması
    document.cookie = "username=johndoe";
    
    // Expires, path, secure və SameSite=Lax ilə kuki qurulması
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 gün
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Kuki oxumaq:

    // document.cookie bütün əlçatan kukilərin "açar=dəyər" formatında sətirini qaytarır
    console.log(document.cookie);
    

    Kukini silmək: Kukini silmək üçün onun bitmə tarixini keçmişə təyin etmək lazımdır.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // expires keçmişə təyin edilir
    

    Silərkən pathdomain parametrlərini dəqiq göstərmək vacibdir, çünki onlar kuki yaradılarkən istifadə olunubsa, eyni olmalıdır. SameSite də uyğun olmalıdır.

  3. Xarici JavaScript kitabxanaları vasitəsilə. Kuki ilə işləmək üçün asanlaşdıran kitabxanalar mövcuddur (məsələn, js-cookie). Bu kitabxanalar kukilərin qurulması, alınması və silinməsi üçün daha rahat API təqdim edir.

    js-cookie ilə nümunə:

    // Kitabxananı daxil etmək
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Kukinin qurulması
    Cookies.set('username', 'johndoe');
    
    // Kukinin qurulması və seçimlər
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires günlərlə
    
    // Kukini oxumaq
    const username = Cookies.get('username'); // 'johndoe' və ya undefined
    const allCookies = Cookies.get(); // bütün kukiləri obyekt kimi qaytarır
    
    // Kukini silmək
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // qurularkən istifadə olunubsa, path göstərmək lazımdır