Перейти к содержимому
Инструменты
Загрузка интерфейса…

Разбор HTTP-запроса и ответа

Разбор сырого HTTP-сообщения: метод, адрес, параметры, заголовки с пояснениями (Authorization, Cookie, Cache-Control), тело и типичные ошибки.

Данные обрабатываются в браузере и никуда не отправляются

Ввод

Перетащите файл сюда или выберите на диске

Результат

Здесь появится результат

Введите данные слева - результат появится сразу

Как пользоваться

Вставьте текстовое HTTP-сообщение: строку GET /path HTTP/1.1 или HTTP/1.1 200 OK, заголовки, пустую строку и тело. Инструмент покажет метод, путь, параметры, статус и заголовки. Используйте текст сообщения из журнала или документации; команда «Copy as cURL» не является HTTP-сообщением. Из вывода curl -v предварительно уберите служебные префиксы > и <.

Для популярных заголовков есть подробный разбор: Authorization (Basic раскодируется, у Bearer-токена JWT показывается алгоритм и срок), Cookie и Set-Cookie (атрибуты безопасности), Cache-Control (каждая директива), Accept (приоритеты), Content-Type (кодировка, boundary), даты, ETag, Retry-After. Предупреждения подсказывают типичные ошибки: нет Host, неверный Content-Length, тело у GET, конфликт Content-Length и Transfer-Encoding.

Частые ошибки

Вот что чаще всего «ломает» HTTP-запросы:

Нет заголовка Host

В HTTP/1.1 заголовок Host обязателен: по нему сервер понимает, какому из сайтов на одном IP адресован запрос. Без него сервер отвечает 400.

Content-Length не совпадает с телом

Если указано больше, чем отправлено, сервер ждёт недостающие байты и зависает до таймаута, если меньше - «лишнее» принимает за следующий запрос. Для CRLF в теле считайте по два байта на перенос.

Нет Content-Type у запроса с телом

Сервер не знает формат тела и отвечает 415 или 400. Для JSON нужен application/json, для формы - application/x-www-form-urlencoded, для файлов - multipart/form-data с boundary.

Пробел перед двоеточием в заголовке

Запись «Host : example.com» недопустима: имя заголовка должно идти вплотную к двоеточию. Серверы по стандарту отвечают на неё 400, а лояльные прокси могут трактовать её по-разному.

Неверные символы в cookie и заголовках

Пробелы, двоеточия и точка с запятой в значениях cookie, а также переносы строк в заголовках приводят к обрезанию или отказу. Значения с такими символами кодируйте (например, процентным кодированием).

Секреты в заголовках логов

Authorization, Cookie и Set-Cookie содержат токены и сессии. Не публикуйте полные запросы в чатах и тикетах: удаляйте или заменяйте значения. Basic-авторизация расшифровывается за секунду.

Частые вопросы

Отправляются ли мои запросы на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части. Разбор выполняется в вашем браузере, поэтому можно вставлять реальные запросы с заголовками.

Откуда взять сырой HTTP-запрос?

Из curl -v (строки со стрелкой > - запрос, < - ответ), из DevTools браузера (Network - Copy - Copy as cURL, а затем curl -v), из логов прокси и шлюза API, из Wireshark или mitmproxy, из документации API. Вставляйте стартовую строку, заголовки, пустую строку и тело.

Чем отличается запрос от ответа?

Запрос начинается с метода и адреса (POST /orders HTTP/1.1), ответ - с версии протокола и кода (HTTP/1.1 201 Created). Дальше в обоих случаях идут заголовки, пустая строка и необязательное тело.

Зачем нужна пустая строка между заголовками и телом?

Это разделитель: всё до неё - заголовки, всё после - тело. Если пустой строки нет, а после заголовков идёт текст, инструмент примет его за заголовок и покажет ошибку.

Что значит Transfer-Encoding: chunked?

Тело передаётся кусками, и его длина заранее неизвестна: перед каждым куском указан его размер. Одновременно с Content-Length такой заголовок нельзя указывать. Инструмент показывает тело как есть, не склеивая куски.

Безопасно ли вставлять сюда токены?

Данные не уходят из браузера, но токены в заголовках - секрет. Для публикации примеров заменяйте их заглушками. Инструмент намеренно показывает расшифровку Basic, чтобы было видно, как мало она защищает.

Чем HTTP/2 отличается в записи?

Двоичные кадры HTTP/2 и набор псевдозаголовков :method/:path напрямую не разбираются. Подходит текстовое представление со стартовой строкой, например GET /path HTTP/2 или HTTP/2 200, обычными заголовками и телом. Инструмент не декодирует сетевой протокол HTTP/2.

Похожие инструменты

Курс «Проектирование архитектуры и интеграций (API, брокеры) + ИИ»

REST, gRPC, SOAP, GraphQL и JSON-RPC, архитектурные подходы, SQL и NoSQL, брокеры сообщений и работа с ИИ. Программа курса помогает систематизировать знания об API и интеграциях; содержание и условия обучения смотрите на Stepik.

Перейти к курсу на Stepik