Sobes.tech
Junior

Brauzerda cookie qanday o'rnatiladi?

sobes.tech AI

AIdan javob

Brauzerda cookie o'rnatishning bir nechta usullari mavjud.

  1. Serverdan Set-Cookie HTTP sarlavhasi orqali. Bu cookie o'rnatishning asosiy usuli bo'lib, u server tomonida amalga oshiriladi. Server brauzerga Set-Cookie sarlavhasini yuboradi, bu brauzerga ma'lum bir kalit-qiymat juftligini saqlashni ko'rsatadi.

    Serverdan HTTP javobining misoli:

    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 sarlavha parametrlari:

    • name=value: Cookie nomi va qiymati. Majburiy parametr.
    • Expires=<date>: Cookie ning amal qilish muddati. Ko'rsatilmagan bo'lsa, cookie sessiya cookie bo'lib, brauzer yopilganda o'chiriladi. Sana formati - RFC 1123.
    • Max-Age=<seconds>: Cookie ning maksimal yashash vaqti sekundlarda. Expires ustun keladi.
    • Domain=<domain>: Cookie uchun mavjud bo'lgan domen. Standart - joriy domen (lekin subdomenlar emas).
    • Path=<path>: Serverdagi cookie uchun mavjud bo'lgan yo'l. Standart - ildiz yo'l /.
    • Secure: Cookie faqat HTTPS orqali yuborilishi kerakligini ko'rsatadigan flag.
    • HttpOnly: Cookie JavaScript orqali document.cookie yordamida kirish mumkin emasligini ko'rsatadigan flag. XSS hujumlardan himoya qiladi.
    • SameSite=<mode>: Cookie ning cross-site so'rovlar bilan yuborilishini boshqaradi. Mümkin bo'lgan qiymatlar: Strict, Lax (standart), None.
  2. Client tomonida JavaScript yordamida. document.cookie obyekti yordamida cookie o'qish, yozish va o'chirish mumkin.

    Cookie yozish:

    // Oddiy cookie o'rnatish
    document.cookie = "username=johndoe";
    
    // expires, path, secure va SameSite=Lax bilan cookie o'rnatish
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 kun
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Cookie o'qish:

    // document.cookie barcha mavjud cookie-larni "key1=value1; key2=value2; ..." formatida qaytaradi
    console.log(document.cookie);
    

    Cookie o'chirish: Cookie o'chirish uchun, uni o'tgan sana bilan o'rnatish kerak.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // expires ni o'tgan sana qilib o'rnatish
    

    O'chirishda, path va domain parametrlarini ham ko'rsatish muhim (agar o'rnatilgan bo'lsa). SameSite ham mos kelishi kerak, to'g'ri o'chirish uchun.

  3. Uchinchi tomon JavaScript kutubxonalari yordamida. Cookie bilan ishlashni soddalashtiradigan kutubxonalar mavjud (masalan, js-cookie). Ular cookie o'rnatish, olish va o'chirish uchun qulay API taqdim etadi.

    js-cookie bilan misol:

    // Kutubxonani qo'shish
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Cookie o'rnatish
    Cookies.set('username', 'johndoe');
    
    // Tanlangan opsiyalar bilan cookie o'rnatish
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires kunlarda
    
    // Cookie o'qish
    const username = Cookies.get('username'); // 'johndoe' yoki undefined
    const allCookies = Cookies.get(); // Barcha cookie-larni obyekt sifatida qaytaradi
    
    // Cookie o'chirish
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // O'rnatilgan joyni ko'rsatish