HTTP-headertolk — begäran- och svarsheaders, avkodade rad för rad
HTTP-headertolkare
Klistra in en hel HTTP-begäran eller ett helt svar — blocket curl -v skriver ut, eller det som webbläsarens nätverkspanel visar — så avkodas varje headerrad: namnet, värdet, en klartextmening om vad den gör och dokumentet som definierar den. Set-Cookie plockas isär attribut för attribut (Secure, HttpOnly, SameSite, Max-Age, Expires…), Content-Type- och Accept-parametrar expanderas, och blocket granskas för de klassiska strukturproblemen: föråldrade vikta rader, otillåtna tecken, dubbletter av headers och headers som skickas i fel riktning. Allt körs i webbläsaren och inget laddas upp.
Indata
Automatiskt tittar på första raden: en begärandrad (GET /sökväg HTTP/1.1) betyder begäran, en statusrad (HTTP/1.1 200 OK) betyder svar, allt annat läses som ett rent headerblock. De andra valen tvingar riktningen, vilket ändrar vilka varningar som gäller.
Tolkad rapport
Inget tolkat än. Klistra in ett begäran- eller svarsblock ovan och tryck på Tolka headers, eller tryck på Exempel för ett genomarbetat exempel.
Var man hittar ett block som är värt att tolka. I en terminal skriver curl -v https://example.com/ 2>&1 ut begäran och svaret med >- och <-prefix — ta bort dem och klistra in. curl -sI https://example.com/ ger bara svarets headerblock. I webbläsaren öppnar man utvecklarverktygen, nätverksfliken, laddar om, väljer dokumentbegäran och använder Kopiera → Kopiera svarsheaders; för begäransidan används Kopiera som cURL och flaggorna läses. Ett rent block med Namn: värde-rader utan startrad tolkas också — riktningskontrollerna lättas då upp.
Självtest Kör tolken igen mot fasta block: riktningsdetektering, båda exempelpoolerna, varje Set-Cookie-attributregel (SameSite=None utan Secure, ett icke-numeriskt Max-Age, ett trasigt Expires, ett okänt attribut, en cookie utan likhetstecken), obs-fold-sammanfogning, otillåtna fältnamn, dubbletter av headers, riktningsmissmatchningar och de negativa vägarna. Inget skickas någonstans.
Vad är en HTTP-header?
På en mening: ett HTTP-meddelande är en startrad, ett block av Namn: värde-rader som kallas headers, en tom rad och en valfri body — headers bär allt om meddelandet utom själva bodyn: vem som skickade det, vad det kan ta emot, hur det cachas, hur det autentiseras och vad avsändaren vill få tillbaka.
vilket format bodyn har och vilken kopia av den det här är
Kontrollheaders
båda, om anslutningen
Cache-Control, Connection, Via, Transfer-Encoding
hur meddelandet och anslutningen hanteras på vägen
Vissa headers är helt enkelriktade: If-None-Match har bara mening i en begäran och Set-Cookie bara i ett svar. Att tolka åt fel håll är ett av de klassiska felsökningsmisstagen vid kopiera-klistra, vilket är anledningen till att den här sidan flaggar det.
Grammatiken för en headerrad
RFC 9110 definierar en fältrad som field-name ":" OWS field-value OWS — ett namn som bara består av tokentecken (bokstäver, siffror och !#$%&'*+-.^_`|~), ett kolon med inget mellanslag före det, och ett värde av synliga tecken, mellanslag och tabbar. Headernamn är skiftlägesokänsliga (content-type är detsamma som Content-Type); värden är nästan alltid skiftlägeskänsliga. En rad som börjar med mellanslag eller tabb fortsatte den föregående headern tidigare — obs-fold, föråldrad sedan 2014: en proxy som packar upp den kan ändra headerns betydelse, så tolkaren här sammanfogar den men varnar för att den finns.
Vanliga misstag
Att lita på X-Forwarded-For. Den läggs till av varje proxy på vägen, och en klient kan förfalska det första hoppet. Den berättar vad en kedja av proxyservrar påstår, inte vem som är ansluten; behandla den som en ledtråd, och föredra en proxy som kontrolleras internt och som skriver över den.
Att bara läsa svarsheaders. Hälften av de intressanta misstagen (en dubblerad Accept, en saknad Host, en auktoriseringsheader riktad mot fel värd) finns i begäran, som webbläsaren döljer som standard. Använd Kopiera som cURL för att se sin egen.
Att slå ihop Set-Cookie-rader. De flesta dubblerade headers får kombineras med kommatecken — Set-Cookie får inte, eftersom kommatecknet förekommer inuti själva värdet. Webbläsare behandlar varje rad som en separat cookie.
Att förvänta sig att Content-Length är den bodystorlek man skrev. Det är storleken efter att Content-Encoding tillämpats och bara när meddelandet inte är chunkat; ett svar med Transfer-Encoding: chunked har ingen meningsfull enskild längd.
Att bedöma headers efter deras X--prefix. Konventionen dog i RFC 6648: X-Forwarded-For och X-Content-Type-Options är permanenta de facto-standarder, medan många headers utan X är experimentella. Bedöm efter det definierande dokumentet, inte prefixet.
Vanliga frågor
Är det säkert att klistra in headers här? Tolkningen sker helt i webbläsaren och inget laddas upp. Men ett kopierat headerblock är ett fingeravtryck: cookies, auktoriseringsheaders och den exakta User-Agenten kan tillsammans identifiera en, så tolka bara block som man inte skulle ha något emot att visa för en kollega.
Varför visar min webbläsare headers som :status som den här sidan kallar fel? Det är HTTP/2- och HTTP/3-pseudoheaders — de binära ramlagren ersätter startraden och Host med pseudofält. Den här sidan tolkar den klassiska HTTP/1.1-textströmmen; pseudoheaders är samma information efter att protokollet översatt den.
Vad hände med X-XSS-Protection? Den är utfasad: granskaren den styrde orsakade egna säkerhetsbuggar och webbläsare tog bort den. Dess uppgift hör hemma i en Content-Security-Policy — bygg en på CSP-generatorn och granska hela uppsättningen på kontrollen av säkerhetsheaders.
Hur kontrolleras ett Set-Cookie-attribut? Mot RFC 6265: namn och värden delas vid första likhetstecknet, attribut efter första semikolonet, Expires måste vara ett datum i cookieformatet, Max-Age är siffror, SameSite är en av Strict/Lax/None — och None utan Secure avvisas av aktuella webbläsare, så det markeras.
Kan man tolka bara en lista med headerrader? Ja — välj Endast headerblock och klistra in utan startrad. Riktningskontrollerna lättas upp; allt annat (struktur, Set-Cookie, parametrar) körs fortfarande.