Назад к вопросам
Junior
93
questionbank
Как установить cookies так, чтобы они удалялись через 3 дня?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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).