Sobes.tech
Junior

როგორ დავაყენოთ კუქი ბრაუზერში?

sobes.tech AI

პასუხი AI-სგან

Cookie-ს დაყენება ბრაუზერში შესაძლებელია რამდენიმე გზით.

  1. HTTP-სათაურის Set-Cookie გამოყენებით სერვერზე. ეს არის ძირითადი მეთოდი cookie-ს დაყენებისთვის, რომელიც ხდება სერვერის მხრიდან. სერვერი აგზავნის ბრაუზერს სათაურს Set-Cookie, რომელიც instructრირებს ბრაუზერს შეინახოს გარკვეული გასაღები-ფასი წყვილი.

    სერვერის HTTP-პასუხის მაგალითი:

    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 სათაურის პარამეტრები:

    • name=value: cookie-ს სახელი და მნიშვნელობა. აუცილებელი პარამეტრი.
    • Expires=<თარიღი>: თარიღი და დრო, როდესაც cookie იწურება. თუ არ არის მითითებული, cookie არის სესიის და წაიშლება ბრაუზერის დახურვისას. თარიღის ფორმატი - RFC 1123.
    • Max-Age=<წამები>: cookie-ს სიცოცხლის მაქსიმალური დრო წამებში. აქვს პრიორიტეტი Expires-ზე.
    • Domain=<დომენი>: დომენი, რომლისთვისაც cookie ხელმისაწვდომია. ჩვეულებრივ - მიმდინარე დომენი (მაგრამ არა ქვედომენები).
    • Path=<პуть>: სერვერზე გზა, რომლისთვისაც cookie ხელმისაწვდომია. ჩვეულებრივ - ძირითადი გზა /.
    • Secure: ნიშანი, რომელიც მიუთითებს, რომ cookie უნდა გაიგზავნოს მხოლოდ HTTPS-ით.
    • HttpOnly: ნიშანი, რომელიც მიუთითებს, რომ cookie არ არის ხელმისაწვდომი JavaScript-ით document.cookie-ის საშუალებით. იცავს XSS თავდასხმებისგან.
    • SameSite=<მოდე>: მართავს cookie-ს გადაცემას კროსსაიტური მოთხოვნების დროს. შესაძლო მნიშვნელობები: Strict, Lax (ნაგულისხმევი), None.
  2. JavaScript-ის გამოყენებით მომხმარებლის მხარეზე. document.cookie ობიექტის საშუალებით შესაძლებელია წაკითხვა, დაწერა და წაშლა cookie-ს.

    Cookie-ის დაწერა:

    // მარტივი cookie-ის დაყენება
    document.cookie = "username=johndoe";
    
    // cookie-ის დაყენება with expires, path, secure და SameSite=Lax
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 დღე
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Cookie-ის წაკითხვა:

    // document.cookie აბრუნებს ყველა ხელმისაწვდომი cookie-ს სტრიქონს "key1=value1; key2=value2; ..." ფორმატში
    console.log(document.cookie);
    

    Cookie-ის წაშლა: Cookie-ის წასაშლელად საჭიროა მისი დაყენება წინა თარიღით.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // expires-ს უნდა ჰქონდეს წინა თარიღი
    

    მნიშვნელოვანია, რომ წაშლის დროს მიუთითოთ იგივე path და domain პარამეტრები (თუ იყო მითითებული), როგორც შექმნის დროს. SameSite-ის მნიშვნელობაც უნდა ემთხვეოდეს სწორად წაშლისთვის.

  3. მხარდამჭერი JavaScript ბიბლიოთეკების გამოყენებით. არსებობს ბიბლიოთეკები, რომლებიც ამარტივებს cookie-ს მუშაობას (მაგალითად, js-cookie). ისინი უზრუნველყოფენ უფრო მოსახერხებელ API-ს cookie-ს დაყენებისა, მიღებისა და წაშლისთვის.

    მაგალითი js-cookie-თან:

    // ბიბლიოთეკის ჩართვა
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // cookie-ის დაყენება
    Cookies.set('username', 'johndoe');
    
    // cookie-ის დაყენება ოპციებით
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires - დღეებში
    
    // cookie-ის მიღება
    const username = Cookies.get('username'); // აბრუნებს 'johndoe' ან undefined
    const allCookies = Cookies.get(); // აბრუნებს ყველა cookie-ს ობიექტად
    
    // cookie-ის წაშლა
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // მიუთითეთ path, თუ იყო მითითებული