Junior
Как да настроя бисквитките така, че да се изтриват след 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).