Методы установки cookie в браузере и через HTTP-заголовки
Краткий ответ
Cookie устанавливаются с помощью HTTP-заголовка Set-Cookie в ответе сервера либо через JavaScript, присваивая значения свойству document.cookie. В обоих случаях можно задать параметры cookie для контроля их поведения и безопасности.
Развёрнуто
Краткий ответ
Cookie можно создать через HTTP-ответ сервера с заголовком Set-Cookie или программно установить в браузере с помощью JavaScript, изменяя значение document.cookie. В обоих случаях задаются имя, значение и дополнительные атрибуты, влияющие на срок действия, область действия и безопасность cookie.
Как это работает
Установка cookie через HTTP:
Когда сервер отправляет ответ клиенту, он может включить заголовок Set-Cookie, который содержит имя, значение и опциональные атрибуты cookie. Браузер сохраняет cookie и отправляет их обратно на сервер при последующих запросах, если они соответствуют параметрам (домену, пути и т. д.).
Установка cookie через JavaScript:
С помощью document.cookie можно прочитать и изменить cookie на стороне клиента. Для установки нового cookie присваивают строку с форматом имя=значение; атрибуты свойству document.cookie.
| Атрибут cookie | Назначение |
|---|---|
| Expires | Дата истечения срока действия cookie |
| Max-Age | Время жизни cookie в секундах |
| Domain | Домен, к которому привязан cookie |
| Path | Путь, на котором cookie действует |
| Secure | Отправка cookie только по HTTPS |
| HttpOnly | Запрет доступа к cookie из JavaScript |
| SameSite | Контроль отправки cookie в кросс-доменных запросах |
Пример
// Установка cookie через JavaScript
// Создаем cookie с именем user, значением John, сроком жизни 1 день и флагом Secure
const expires = new Date(Date.now() + 86400e3).toUTCString();
document.cookie = `user=John; Expires=${expires}; Path=/; Secure; SameSite=Strict`;
// Пример HTTP-заголовка для установки cookie
Set-Cookie: sessionId=abc123; Max-Age=3600; Path=/; HttpOnly; Secure; SameSite=Lax
Что важно знать на собеседовании
- HTTP-заголовок
Set-Cookie— основной способ установки cookie с сервера. document.cookieпозволяет читать и создавать cookie на клиенте, но не изменяет напрямую существующие — он добавляет новые или обновляет.- Атрибут
HttpOnlyзащищает cookie от доступа через JavaScript, что важно для безопасности. - Атрибут
SameSiteпомогает предотвратить CSRF-атаки, ограничивая отправку cookie в кросс-доменных запросах. - Понимать отличие между
ExpiresиMax-Ageдля контроля времени жизни cookie.
Тема: Web-тестирование и DevTools | Уровень: middle