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á.
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í.
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.
Čtyři rodiny
RodinaPutuje vPříkladyOdpovídá na otázku
Hlavičky požadavkuklient → serverHost, Accept, Cookie, Referer, Authorizationco klient chce a za koho se vydává
Hlavičky odpovědiserver → klientLocation, Server, Set-Cookie, Retry-Afterco server udělal a co za to žádá
Hlavičky reprezentaceobojí, o těleContent-Type, Content-Length, Content-Encoding, ETagv jakém formátu je tělo a která kopie to je
Řídicí hlavičkyobojí, o spojeníCache-Control, Connection, Via, Transfer-Encodingjak se zpráva a spojení zpracovávají na cestě

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ěží.