← Назад к вопросам

В каком месте HTTP-запроса находятся Cookie

1.0 Junior🔥 161 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI20 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Где находятся Cookie в HTTP-запросе

Cookie передаются в заголовках (headers) HTTP-запроса — конкретно в заголовке Cookie. Это строго стандартизировано в RFC 6265.

Структура HTTP-запроса

HTTP-запрос состоит из трёх частей:

  1. Стартовая строка — метод, URL, версия протокола
  2. Заголовки (Headers) — метаданные запроса
  3. Тело (Body) — данные (опционально, например в POST)

Cookie находятся именно во второй части — в заголовках.

Пример HTTP-запроса с Cookie

GET /api/user/profile HTTP/1.1
Host: example.com
Accept: application/json
Cookie: session_id=abc123xyz; theme=dark; lang=ru

Kак видно, все куки объединяются в одну строку заголовка Cookie, разделённые точкой с запятой и пробелом.

Полный цикл работы с Cookie

1. Сервер устанавливает Cookie через ответ:

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: session_id=abc123xyz; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600
Set-Cookie: theme=dark; Path=/; Max-Age=86400

Здесь используется заголовок ответа Set-Cookie — для каждой куки отдельный заголовок.

2. Браузер сохраняет куки и отправляет их обратно:

При каждом последующем запросе к тому же домену браузер автоматически добавляет заголовок Cookie с соответствующими куками.

Атрибуты Cookie и их влияние

АтрибутНазначение
HttpOnlyНедоступна через document.cookie — защита от XSS
SecureПередаётся только по HTTPS
SameSite=Strict/Lax/NoneКонтроль отправки при кросс-сайт запросах
DomainДомен, для которого действует кука
PathПуть на сервере, для которого действует кука
Max-Age / ExpiresВремя жизни куки

Cookie и JavaScript

Доступ к кукам из JavaScript:

// Чтение (только non-HttpOnly)
console.log(document.cookie); // "theme=dark; lang=ru"

// Установка
document.cookie = "username=john; path=/; max-age=3600";

// Удаление (установить истёкшую дату)
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";

Важно: document.cookie не перезаписывает все куки при присваивании — каждая операция добавляет или обновляет только одну куку.

Cookie vs другие способы хранения данных аутентификации

ХранилищеГде передаётсяАвтоматически браузеромXSS-защита
Cookie (HttpOnly)Header CookieДаДа
localStorageНужно вручную (Bearer)НетНет
sessionStorageНужно вручную (Bearer)НетНет

CSRF и Cookie

Поскольку браузер автоматически прикрепляет куки к каждому запросу, это создаёт уязвимость CSRF (Cross-Site Request Forgery). Атакующий сайт может отправить запрос к вашему API — и браузер автоматически приложит куки жертвы.

Защита:

  • SameSite=Strict или SameSite=Lax — браузер не отправляет куки при кросс-сайт запросах
  • CSRF-токены в теле или отдельном заголовке
  • Проверка заголовка Origin / Referer на сервере

Итог

Cookie находятся в заголовке Cookie HTTP-запроса. Сервер устанавливает их через заголовок Set-Cookie в ответе. Браузер автоматически отправляет все подходящие куки при каждом запросе к соответствующему домену и пути. Понимание этого механизма критично для реализации безопасной аутентификации.

В каком месте HTTP-запроса находятся Cookie | PrepBro