Parser HTTP hlaviček — hlavičky požadavku a odpovědi dekódované řádek po řádku
Analyzátor HTTP hlaviček
Vložte celý požadavek nebo odpověď HTTP — blok, který vypíše curl -v, nebo to, co ukazuje panel Síť v prohlížeči — a každý řádek hlavičky se dekóduje: název, hodnota, věta srozumitelně popisující, co dělá, a dokument, který ji definuje. Set-Cookie se rozebere atribut po atributu (Secure, HttpOnly, SameSite, Max-Age, Expires…), parametry Content-Type a Accept se rozvinou a blok se kontroluje na klasické strukturální problémy: zastaralé skládané řádky, nepovolené znaky, duplicitní hlavičky a hlavičky poslané ve špatném směru. Vše běží ve vašem prohlížeči a nic se nenahrává.
Vstup
Automaticky se dívá na první řádek: řádek požadavku (GET /path HTTP/1.1) znamená požadavek, stavový řádek (HTTP/1.1 200 OK) znamená odpověď, cokoli jiného se čte jako holý blok hlaviček. Ostatní volby směr vynutí, což změní, která varování platí.
Parsovaný report
Zatím nic nerozparsováno. Vložte výše blok požadavku nebo odpovědi a stiskněte Parsovat hlavičky, nebo stiskněte Ukázka pro příklad.
Kde získat blok hodný parsování. V terminálu curl -v https://example.com/ 2>&1 vypíše požadavek i odpověď s prefixy > a < — tyto prefixy odstraňte a vložte. curl -sI https://example.com/ dá jen blok hlaviček odpovědi. V prohlížeči otevřete nástroje pro vývojáře, kartu Síť, obnovte, vyberte požadavek na dokument a použijte Kopírovat → Kopírovat hlavičky odpovědi; pro stranu požadavku použijte Kopírovat jako cURL a přečtěte přepínače. Holý blok řádků Název: hodnota bez počátečního řádku se také rozparsuje — kontroly směru jsou pak zmírněny.
Autotest Znovu spustí parser nad pevnými bloky: detekce směru, oba vzorové soubory, každé pravidlo atributu Set-Cookie (SameSite=None bez Secure, nečíselný Max-Age, rozbitý Expires, neznámý atribut, cookie bez rovnítka), spojování obs-fold, nepovolené názvy polí, zdvojené hlavičky, nesoulad směru a záporné cesty. Nic se nikam neodesílá.
Co je hlavička HTTP?
Jednou větou: zpráva HTTP je počáteční řádek, blok řádků Název: hodnota nazývaných hlavičky, prázdný řádek a volitelné tělo — hlavičky nesou vše o zprávě kromě samotného těla: kdo ji odeslal, co může přijmout, jak se ukládá do cache, jak se ověřuje a co odesílatel očekává zpět.
Některé hlavičky jsou pevně jednosměrné: If-None-Match má smysl jen v požadavku a Set-Cookie jen v odpovědi. Parsování ve špatném směru je jednou z klasických chyb ladění při kopírování a vkládání, proto ji tato stránka označuje.
Gramatika řádku hlavičky
RFC 9110 definuje řádek pole jako field-name ":" OWS field-value OWS — název složený pouze ze znaků tokenu (písmena, číslice a !#$%&'*+-.^_`|~), dvojtečku s žádnou mezerou před ní a hodnotu z viditelných znaků, mezer a tabulátorů. Názvy hlaviček nerozlišují velikost písmen (content-type se rovná Content-Type); hodnoty jsou téměř vždy citlivé na velikost písmen. Řádek začínající mezerou nebo tabulátorem dřív pokračoval předchozí hlavičkou — obs-fold, zastaralé od roku 2014: proxy, která jej rozbalí, může změnit význam hlavičky, takže parser zde řádky spojí, ale varuje vás, že tam jsou.
Časté chyby
Důvěřovat X-Forwarded-For. Přidává ji každý proxy na cestě a klient může sfalšovat první skok. Říká vám, co tvrdí řetězec proxy, ne kdo je připojen; berte to jako nápovědu a dávejte přednost proxy, kterou ovládáte a která ji přepisuje.
Čtení jen hlaviček odpovědi. Polovina zajímavých chyb (zdvojená Accept, chybějící Host, autorizační hlavička mířící na špatného hostitele) žije v požadavku, který prohlížeč ve výchozím nastavení skrývá. Použijte Kopírovat jako cURL, abyste viděli své vlastní.
Slučování řádků Set-Cookie. Většinu zdvojených hlaviček lze spojit čárkami — Set-Cookie nelze, protože čárka se objevuje uvnitř samotné hodnoty. Prohlížeče každý řádek berou jako samostatný cookie.
Očekávat, že Content-Length je velikost těla, kterou jste napsali. Je to velikost po aplikaci Content-Encoding a jen tehdy, když zpráva není chunked; odpověď s Transfer-Encoding: chunked nemá smysluplnou jedinou délku.
Posuzovat hlavičky podle prefixu X-. Konvence zanikla v RFC 6648: X-Forwarded-For a X-Content-Type-Options jsou trvalými de-facto standardy, zatímco mnoho hlaviček bez X je experimentálních. Posuzujte podle definujícího dokumentu, ne podle prefixu.
Časté dotazy
Je bezpečné sem vkládat hlavičky? Parsování probíhá zcela ve vašem prohlížeči a nic se nenahrává. I tak je zkopírovaný blok hlaviček otisk: cookies, autorizační hlavičky a přesný User-Agent dohromady mohou identifikovat vás, takže parsujte bloky, které byste nevadilo ukázat kolegovi.
Proč můj prohlížeč ukazuje hlavičky jako :status, které tato stránka označuje za chyby? Jsou to pseudohlavičky HTTP/2 a HTTP/3 — binární rámcové vrstvy nahrazují počáteční řádek a Host pseudopoli. Tato stránka parsuje klasický textový formát HTTP/1.1; pseudohlavičky jsou stejná informace poté, co ji protokol přeložil.
Co se stalo s X-XSS-Protection? Je zastaralá: auditor, který poháněla, sám způsoboval bezpečnostní chyby a prohlížeče ji odstranily. Její úloha patří Content-Security-Policy — sestavte ji v generátoru CSP a celou sadu zkontrolujte v kontrole bezpečnostních hlaviček.
Jak se kontroluje atribut Set-Cookie? Podle RFC 6265: názvy a hodnoty se dělí na prvním rovnítku, atributy za prvním středníkem, Expires musí být datum ve formátu cookies, Max-Age číslice, SameSite jedna z hodnot Strict/Lax/None — a None bez Secure současné prohlížeče odmítají, proto je to zvýrazněno.
Mohu parsovat jen seznam řádků hlaviček? Ano — zvolte Pouze blok hlaviček a vložte bez počátečního řádku. Kontroly směru jsou zmírněny; vše ostatní (struktura, Set-Cookie, parametry) stále běží.