Что такое HTTP-заголовки и какие их основные типы существуют?

Ответ

HTTP-заголовки (HTTP Headers) — это строки в формате ключ: значение, которые передают метаданные о HTTP-запросе или ответе. Они следуют за стартовой строкой и отделяются от тела сообщения пустой строкой.

Заголовки позволяют клиенту и серверу обмениваться служебной информацией, управляя такими аспектами, как:

  • Аутентификация и авторизация
  • Кэширование
  • Управление сессиями (cookies)
  • Формат и кодировка передаваемых данных (Content Negotiation)

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

GET /api/users/123 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: application/json
Authorization: Bearer <token>

Пример HTTP-ответа:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 78
Cache-Control: no-cache
Set-Cookie: session_id=abcde12345; HttpOnly

Основные группы заголовков по назначению:

  • Идентификация и маршрутизация:

    • Host: Обязательный заголовок в HTTP/1.1, указывает доменное имя сервера.
    • User-Agent: Идентифицирует клиентское приложение (например, браузер).
    • Server: Идентифицирует программное обеспечение веб-сервера.
  • Переговоры о содержимом (Content Negotiation):

    • Accept: Сообщает серверу, какие типы контента (MIME-типы) может принять клиент.
    • Accept-Language: Указывает предпочитаемый язык.
    • Content-Type: Указывает MIME-тип ресурса в теле сообщения.
    • Content-Length: Размер тела сообщения в байтах.
  • Аутентификация и сессии:

    • Authorization: Содержит учетные данные для аутентификации клиента на сервере.
    • Cookie: Отправляет на сервер cookie, ранее установленные заголовком Set-Cookie.
    • Set-Cookie: Отправляет cookie от сервера клиенту для сохранения.
  • Кэширование:

    • Cache-Control: Содержит директивы для управления кэшированием как для запросов, так и для ответов.
    • ETag: Идентификатор конкретной версии ресурса, используется для условных запросов.