Парсер HTTP-заголовков

Разбор необработанных HTTP-заголовков запроса или ответа в структурированную таблицу. Извлечение строки состояния, заголовков, файлов cookie и информации о типе содержимого.

Автоопределение типа Извлечение cookie Анализ Content-Type

Как использовать парсер HTTP-заголовков

1

Вставьте заголовки

Скопируйте необработанные HTTP-заголовки из инструментов разработчика браузера (вкладка Network) или из другого источника и вставьте их в поле ввода.

2

Автоматический разбор

Заголовки мгновенно разбираются в структурированную таблицу с автоматическим определением типа — запрос или ответ.

3

Просмотр деталей

Просмотрите строку состояния, отдельные заголовки, извлечённые cookie и разбивку Content-Type.

Что такое HTTP-заголовки?

HTTP-заголовки — это пары «ключ-значение», передаваемые между клиентом и сервером в HTTP-запросах и ответах. Они содержат метаданные о запросе или ответе, такие как тип содержимого, правила кэширования, токены аутентификации и информацию о cookie. Понимание заголовков необходимо для отладки веб-приложений, оптимизации производительности и обеспечения безопасности.

Заголовки запроса

Отправляются клиентом на сервер, включая Host, User-Agent, Accept, Authorization и Cookie.

Заголовки ответа

Отправляются сервером клиенту, включая Content-Type, Set-Cookie, Cache-Control и X-Request-Id.

Заголовки безопасности

Заголовки вроде Content-Security-Policy, Strict-Transport-Security и X-Frame-Options, повышающие безопасность.

Часто задаваемые вопросы

Разбирает ли он заголовки как запросов, так и ответов?

Да. Парсер автоматически определяет, является ли ввод HTTP-запросом или ответом на основе первой строки и разбирает соответствующим образом. Строки запроса начинаются с HTTP-метода (GET, POST и т. д.), а строки ответа — с HTTP/версия.

Может ли он извлечь cookie из заголовков Set-Cookie?

Да. Заголовки Set-Cookie разбираются на отдельные cookie с отображением имени, значения и всех флагов, таких как HttpOnly, Secure, SameSite, Path, Domain и Max-Age.

Какие форматы заголовков принимаются?

Стандартный формат HTTP/1.1 и HTTP/2 с одним заголовком на строку в формате «Имя: Значение». Вы можете скопировать заголовки прямо из инструментов разработчика браузера.

Какие HTTP-заголовки встречаются чаще всего?

Запросы обычно содержат host, user-agent, accept, accept-encoding и cookie; ответы возвращают content-type, content-length, cache-control, set-cookie и date. В API-трафике в направлении запроса добавляются authorization и content-type: application/json, а в направлении ответа — заголовки rate-limit. RFC 9110 (семантика HTTP, 2022) — современный стандарт, определяющий их все.

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

Заголовки запроса (host, authorization, accept-*) описывают, чего хочет клиент; заголовки ответа (location, set-cookie, retry-after) описывают, что пришло в ответ. Некоторые поля встречаются в обоих направлениях (cache-control, content-type), а некоторые управляют самим соединением (connection: keep-alive), а не содержимым сообщения. Этот парсер помечает, к какой стороне относится каждый заголовок.

Как обрабатываются дублирующиеся HTTP-заголовки?

Согласно RFC 9110, большинство повторяющихся полей объединяются в один список через запятую — две строки cache-control эквивалентны одной строке вида no-cache, no-store. Set-Cookie — документированное исключение: его нельзя объединять запятой, поскольку даты в Expires содержат запятые, поэтому прокси должны пересылать каждый Set-Cookie отдельно. Это исключение — классический источник ошибок в прокси.

Что изменилось с заголовками в HTTP/2 и HTTP/3?

Имена полей стали строчными и передаются в виде бинарных фреймов, сжатых HPACK или QPACK; каждый запрос открывает собственный поток, а заголовки соединения вроде Host были заменены псевдозаголовком :authority наряду с :method, :scheme и :path. Семантически поля по-прежнему следуют RFC 9110 — изменился формат передачи, а не словарь.

Какой синтаксис заголовков действительно недопустим?

Пробел между именем поля и двоеточием (Header : value) — парсер HTTP/1.1 и спецификация HTTP/2 отклоняют его для предотвращения request smuggling. Также недопустимы: пробелы или не-ASCII байты внутри имени поля, управляющие символы в значениях и obs-fold (заголовок, продолженный строкой с отступом), который RFC 9110 помечает как устаревший — замените его одной строкой или значением-списком.

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}