Sobes.tech
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).