Junior
როგორ დავაყენოთ cookies-ები ისე, რომ ისინი 3 დღის შემდეგ წაიშალოს?
sobes.tech AI
პასუხი AI-სგან
3 დღის შემდეგ წაშლის მიზნით "კუკი"-ის დაყენებისთვის შეგიძლიათ გამოიყენოთ expires ან max-age ატრიბუტი.
-
expires: განსაზღვრავს კონკრეტულ თარიღსა და დროს, როდესაც "კუკი" უნდა ამოიწუროს. თარიღი უნდა იყოს GMT ფორმატში.
-
max-age: განსაზღვრავს წამების რაოდენობას, რომლის შემდეგაც "კუკი" უნდა ამოიწუროს, დაწყებული დაყენების მომენტიდან. ეს უფრო მოქნილი და რეკომენდირებულია.
JavaScript-ის მაგალითში max-age-ის გამოყენებით:
// მიმდინარე დრო მივიღოთ მილიწამებში
const now = new Date().getTime();
// ვთვლით 3 დღის დროს მილიწამებში
const threeDaysInMilliseconds = 3 * 24 * 60 * 60 * 1000;
// ვთვლით ამოწურვის დროს მილიწამებში
const expirationTime = now + threeDaysInMilliseconds;
// ვქმნით Date ობიექტს ამოწურვის დროს
const expirationDate = new Date(expirationTime);
// ვაყენებთ კუკის `expires` ატრიბუტით, რომელიც გარდაქმნილია GMT ფორმატში
//document.cookie = "myCookie=myValue; expires=" + expirationDate.toUTCString();
// ან ვიყენებთ `max-age`-ს (რეკომენდირებულია)
const threeDaysInSeconds = 3 * 24 * 60 * 60;
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds;
// დამატებითი ატრიბუტები უკეთესი პრაქტიკისთვის:
// secure - კუკი მხოლოდ HTTPS-ით იგზავნება
// HttpOnly - კუკი ხელმისაწვდომი არ არის document.cookie-დან (უსაფრთხოება XSS-დან)
// path - გზა, სადაც კუკი მოქმედებს
// domain - დომენი, სადაც კუკი მოქმედებს
// SameSite - თავიდან ავიცილოთ კუკის გადაცემა cross-site მოთხოვნებზე (სასურველია: Strict, Lax)
document.cookie = "myCookie=myValue; max-age=" + threeDaysInSeconds + "; path=/; secure; SameSite=Lax";
expires და max-age შედარება:
| ატრიბუტი | აღწერა | ფორმატი | უპირატესობები | ნაკლოვანებები |
|---|---|---|---|---|
expires |
განსაზღვრავს კონკრეტულ თარიღს, როდესაც კუკი ამოიწურება | GMT ფორმატის თარიღი | თავსებადი ძველი ბრაუზერებისთვის | დამოკიდებულია მომხმარებლის სისტემის დროის სიზუსტეზე |
max-age |
განსაზღვრავს წამების რაოდენობას, როდესაც კუკი ამოიწურება | წამების რაოდენობა | დროის სიზუსტეზე არ არის დამოკიდებული | შესაძლოა, არ იყოს სრულად მხარდაჭერილი ძველ ბრაუზერებში |
ასევე, "კუკი" შეიძლება დაყენდეს სერვერზეც, მაგალითად, Set-Cookie ჰედით:
Set-Cookie: myCookie=myValue; Max-Age=259200; Path=/; Secure; SameSite=Lax
აქ Max-Age=259200 შეესაბამება 3 დღით (секундаებში).