Ответ
Время жизни HTTP-куки управляется двумя атрибутами:
1. Атрибут Max-Age (приоритетный):
- Указывает максимальный срок жизни куки в секундах с момента установки.
- Кука автоматически удаляется браузером по истечении этого времени.
2. Атрибут Expires (устаревший, но поддерживаемый):
- Указывает абсолютную дату и время истечения в формате GMT.
- После этой даты кука считается недействительной.
Типы кук по сроку жизни:
- Сессионные (Session Cookies): Не имеют атрибутов
Max-AgeилиExpires. Удаляются при закрытии браузера (точнее, сессии). - Постоянные (Persistent Cookies): Имеют заданный
Max-AgeилиExpires. Хранятся на диске и пересылаются до истечения срока.
Примеры установки:
# HTTP-заголовок ответа сервера для установки куки на 1 день
Set-Cookie: sessionid=abc123; Max-Age=86400; Path=/; HttpOnly
// Установка куки с помощью JavaScript на 7 дней
const days = 7;
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
const expires = "expires=" + date.toUTCString();
document.cookie = "username=John; " + expires + "; path=/";
Ограничения: Максимальный срок жизни зависит от браузера (обычно несколько лет, например, 400 дней в Chrome). Куки с датой истечения в далеком будущем могут быть обрезаны до максимально допустимого лимита браузера.