Назад к вопросам
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).