Что такое HTTP-заголовок (header)?

«Что такое HTTP-заголовок (header)?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-заголовок (header) — это часть HTTP-запроса или ответа, содержащая метаданные в виде пар «ключ: значение». Заголовки управляют передачей данных, кэшированием, аутентификацией, форматом содержимого и другими аспектами взаимодействия клиента и сервера.

Основные типы заголовков:

  • Заголовки запроса (Request Headers): Определяются клиентом.
    • User-Agent: Информация о клиенте (браузер, ОС).
    • Authorization: Учетные данные для доступа.
    • Accept: Типы контента, которые клиент может обработать (например, application/json).
  • Заголовки ответа (Response Headers): Определяются сервером.
    • Content-Type: Тип передаваемых данных (например, text/html; charset=utf-8).
    • Set-Cookie: Установка cookie на стороне клиента.
    • Cache-Control: Директивы по кэшированию.
  • Общие заголовки (General Headers): Могут быть в запросе и ответе.
    • Date: Дата и время сообщения.

Пример в контексте тестирования: При тестировании API мы часто проверяем заголовки. Например, с помощью Postman или в автотестах на Python:

import requests

response = requests.get('https://api.example.com/users')

# Проверяем статус и заголовки
assert response.status_code == 200
assert response.headers['Content-Type'] == 'application/json; charset=utf-8'
# Проверяем наличие кастомного заголовка
assert 'X-Request-ID' in response.headers

Понимание заголовков критично для тестирования безопасности (проверка Secure и HttpOnly флагов у cookies), производительности (настройки кэша) и корректности данных (кодировка, тип контента).