Каковы ключевые свойства протокола HTTP?

«Каковы ключевые свойства протокола HTTP?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня с следующими фундаментальными свойствами:

  1. Без состояния (Stateless). Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для его понимания. Сервер не хранит контекст сессии между запросами (для управления состоянием используются механизмы вроде cookies, токенов или сессий на стороне приложения).

  2. Текстовый (в HTTP/1.1) или бинарный (в HTTP/2, HTTP/3) формат. Исходные версии протокола используют читаемый текст, что упрощает отладку. Современные версии перешли на бинарные фреймы для повышения производительности.

  3. Клиент-серверная архитектура. Четкое разделение ролей: клиент инициирует запрос, сервер его обрабатывает и возвращает ответ.

  4. Единообразие интерфейса (Uniform Interface). Определяется использованием:

    • Ресурсов и URI — каждый ресурс имеет уникальный адрес.
    • Методов запросовGET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS.
    • Представлений ресурсов — данные передаются в формате (JSON, XML, HTML), не привязанном к их внутреннему хранению на сервере.
  5. Система кодов состояния. Ответ сервера всегда содержит числовой код, указывающий на результат обработки запроса (например, 200 — успех, 404 — не найдено, 500 — внутренняя ошибка сервера).

Пример HTTP/1.1 запроса и ответа:

# ЗАПРОС (Request)
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

# ОТВЕТ (Response)
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234

<!DOCTYPE html>
<html>...</html>