Что такое raw HTTP-запрос?

Raw HTTP-запрос — это текстовое представление HTTP-сообщения в том виде, в котором оно передаётся по сети. Он состоит из строки запроса (метод, URL и версия HTTP), за которой следуют поля заголовков (пары ключ-значение), пустая строка и необязательное тело. Например, простой GET-запрос выглядит как GET /index.html HTTP/1.1, за которым следуют заголовки вида Host: example.com.

Понимание raw HTTP-запросов является основой веб-разработки, отладки API и диагностики сети. Такие инструменты, как cURL, Wireshark и инструменты разработчика в браузере, часто отображают запросы в raw-формате. Умение читать и проверять такие сообщения помогает разработчикам выявлять проблемы: некорректные заголовки, неправильную длину содержимого, отсутствующие заголовки host или несоответствие версий протокола.

Описание инструмента

Валидатор raw HTTP-запросов выполняет разбор и проверку raw HTTP-сообщений. Вставьте полный raw HTTP-запрос — включая строку запроса, заголовки и необязательное тело — и инструмент проверит его соответствие корректному синтаксису HTTP. Если запрос валиден, инструмент извлекает и отображает ключевые сведения: HTTP-метод, URL, версию HTTP, host, количество заголовков и размер тела в байтах. Если запрос некорректен, сообщается конкретная ошибка разбора.

Возможности

  • Полный разбор запроса: проверяет всю структуру HTTP-сообщения, включая строку запроса, заголовки и тело
  • Детальное извлечение полей: отображает разобранный метод, URL, версию HTTP, заголовок host, количество заголовков и размер тела в байтах
  • Сообщения об ошибках: предоставляет конкретные сообщения об ошибках, если запрос неполный или некорректный
  • Предзаполненный пример: содержит образец POST-запроса, чтобы сразу увидеть ожидаемый формат
  • Разбор на основе стандартов: использует библиотеку http-parser-js, реализующую ту же логику разбора, что и Node.js

Принцип работы

Инструмент использует http-parser-js — реализацию HTTP-парсера на JavaScript, изначально написанного на C для Node.js. При вставке raw-запроса парсер обрабатывает его побайтово: определяет строку запроса, извлекает каждую пару заголовков, накапливает тело и проверяет полноту сообщения. Если парсер обнаруживает синтаксическую ошибку или сообщение неполное (отсутствует завершающая пустая строка или объявленное содержимое тела), фиксируется сбой. При успешном разборе компоненты отображаются в структурированных полях вывода.

Ограничения

  • Только HTTP/1.x: парсер обрабатывает запросы HTTP/1.0 и HTTP/1.1. Бинарные фреймы HTTP/2 не поддерживаются
  • Только запросы: инструмент проверяет HTTP-запросы, но не HTTP-ответы
  • Без семантической проверки: парсер проверяет структурную корректность, но не валидирует логическую правильность значений заголовков (например, соответствие Content-Type фактическому формату тела)

Сценарии использования

  • Отладка API: проверяйте raw-запросы, полученные из логов, прокси или документации, перед отправкой на сервер
  • Изучение HTTP: исследуйте структуру HTTP-сообщений, экспериментируя с различными методами, заголовками и форматами тела
  • Анализ безопасности: изучайте и проверяйте подозрительные или нестандартные HTTP-запросы, обнаруженные в ходе тестирования на проникновение или анализа логов