Ответ
HTTP-ответ, отправляемый сервером клиенту, имеет строго определённую структуру согласно RFC. С точки зрения DevOps важно понимать её для отладки, логирования и настройки веб-серверов/прокси.
Структура ответа:
-
Строка статуса (Status Line):
- Версия протокола (например,
HTTP/1.1илиHTTP/2). - Код состояния (Status Code) — трёхзначное число, указывающее на результат запроса.
1xx— информационные (например,101 Switching Protocolsдля WebSockets).2xx— успех (200 OK,201 Created,204 No Content).3xx— перенаправление (301 Moved Permanently,302 Found,304 Not Modified).4xx— ошибка клиента (400 Bad Request,403 Forbidden,404 Not Found,429 Too Many Requests).5xx— ошибка сервера (500 Internal Server Error,502 Bad Gateway,503 Service Unavailable,504 Gateway Timeout).
- Пояснение к коду (Reason Phrase) — краткое текстовое описание кода (например,
OK,Not Found).HTTP/1.1 200 OK
- Версия протокола (например,
-
Заголовки (Headers): Метаданные ответа в формате
Key: Value. Важные для DevOps заголовки:Content-Type: text/html; charset=utf-8— тип и кодировка тела ответа.Content-Length: 125— размер тела в байтах.Cache-Control: max-age=3600, public— инструкции кэширования для клиентов и прокси.Server: nginx/1.18.0— информация о сервере (часто маскируется в целях безопасности).Set-Cookie: sessionId=abc123; Path=/; HttpOnly— установка куки.Location: https://new.example.com— для редиректов (3xx).X-Request-ID: 8a7f6e— пользовательский заголовок для сквозной трассировки запросов в микросервисной архитектуре.Date: Mon, 27 Mar 2023 10:00:00 GMT Content-Type: application/json Cache-Control: no-cache
-
Пустая строка (CRLF) — обязательный разделитель между заголовками и телом.
-
Тело ответа (Body): Необязательная часть, содержащая запрошенные данные (HTML-страницу, JSON, изображение и т.д.). Отсутствует у ответов с кодом
204 No Contentили304 Not Modified.{"status": "success", "data": {"id": 42}}
Полный пример ответа от API:
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Content-Length: 52
X-Powered-By: Express
X-Request-ID: req-789xyz
Date: Mon, 27 Mar 2023 10:00:00 GMT
{"id": 1001, "message": "Resource created successfully"}
Инструменты для анализа: curl -v, telnet, DevTools в браузере, tcpdump, а также логи веб-серверов (Nginx/Apache) и инструменты мониторинга (Prometheus, Grafana с метриками по кодам ответа).