Разбор HTTP-запроса и ответа
Разбор сырого HTTP-сообщения: метод, адрес, параметры, заголовки с пояснениями (Authorization, Cookie, Cache-Control), тело и типичные ошибки.
Данные обрабатываются в браузере и никуда не отправляются
Ввод
Результат
Здесь появится результат
Введите данные слева - результат появится сразу
Как пользоваться
Вставьте сырое HTTP-сообщение - запрос (GET /path HTTP/1.1) или ответ (HTTP/1.1 200 OK) с заголовками, пустой строкой и телом: разбор появляется сразу. Инструмент покажет метод с пояснением (безопасный ли, идемпотентный ли), путь и параметры в раскодированном виде, код ответа с описанием, все заголовки с расшифровкой и тело (JSON форматируется, поля формы раскладываются в таблицу). Такой текст можно взять из curl -v, Wireshark, логов прокси, DevTools браузера (Copy as cURL) или из документации API.
Для популярных заголовков есть подробный разбор: 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 заголовки передаются в двоичном виде и сжимаются, а имена пишутся строчными буквами. Показываемый здесь текст - это удобная запись того же сообщения, как её выводят DevTools и curl, поэтому HTTP/2 вставлять можно.
Похожие инструменты
Курс «Проектирование API и интеграций»
Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.
Перейти к курсу на Stepik