Ответ
Время жизни 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). Куки с датой истечения в далеком будущем могут быть обрезаны до максимально допустимого лимита браузера.
Ответ 18+ 🔞
А, ну вот, подъехали к вкусному — к печенькам, которые живут в твоём браузере. Слушай, а ведь это целая наука, блядь, как ими управлять, чтобы они не протухли раньше времени! Вообще, срок их годности контролируют две главные штуки, и одна из них — полная пиздец-старость, но её ещё терпят.
1. Атрибут Max-Age (главный понтяра):
- Эта хуйня говорит, сколько кука может прожить, но не в годах, а в секундах, с того самого момента, как её впихнули в браузер.
- Как только время вышло — всё, браузер её, сука, без сожалений в мусорку. Автоматом.
2. Атрибут Expires (дедушка, который уже на пенсии, но его ещё пускают на порог):
- А вот это — конкретная дата и время, когда печеньке пиздец. Формат там GMT, всякое такое.
- Календарь перелистнули, дата прошла — кука стала неликвидом, её больше не отправляют.
И какие же они бывают, эти сушки?
- Сессионные (Session Cookies): Это, блядь, одноразовые тапочки. У них нет ни
Max-Age, ниExpires. Закрыл браузер — всё, сессия кончилась, и куки сгинули в небытие. - Постоянные (Persistent Cookies): А вот это уже серьёзные пацаны. У них прописан либо срок годности, либо дата смерти. Они живут у тебя на диске и таскаются на сервер при каждом удобном случае, пока не сдохнут.
Смотри, как их впихивают:
# Сервер такой: "Держи, братан, куку на сутки, не проспи!"
Set-Cookie: sessionid=abc123; Max-Age=86400; Path=/; HttpOnly
// А тут уже JS-разработчик, потирая руки, делает куку на недельку
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=/";
Но и тут, конечно, подвох ебаный: Бесконечно хранить нельзя, у каждого браузера свой потолок. Хуйня в том, что если ты поставишь Expires на 2099 год, браузер такой: "Охуел, что ли?" — и обрежет до своего лимита, который, например, в Chrome — около 400 дней. Так что не обманешь систему, хитрожопый.