Sobes.tech
Junior

Ինչպես տեղադրել կուկի browser-ում?

sobes.tech AI

Պատասխան AI-ից

Բրաուզերում cookie-ները կարելի է կարգավորել մի քանի եղանակով:

  1. HTTP գլխում Set-Cookie միջոցով սերվերից։ Սա հիմնական մեթոդն է cookie-ների կարգավորման համար, որը կատարվում է սերվերի կողմից։ Սերվերը ուղարկում է Set-Cookie գլխով, որը instructs բրաուզերին պահել որոշակի բանալի-արժեք զույգ:

    Սերվերից 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-ի ուղարկումը cross-site հարցումների ժամանակ։ հնարավոր արժեքներ՝ Strict, Lax (նույնպես), None։
  2. JavaScript-ի միջոցով հաճախորդի կողմում։ Օգտագործելով document.cookie օբյեկտը՝ կարելի է կարդալ, գրանցել և ջնջել cookie-ները։

    Cookie գրանցում:

    // պարզ cookie-ի կարգավորում
    document.cookie = "username=johndoe";
    
    // cookie-ի կարգավորում `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, եթե այն նշված էր