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 - межсайтовтық сұрауларда кука жіберуді болдырмайды (ұсынылады: 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 күнге тең секундтарда (3 * 24 * 60 * 60).