Rohe HTTP-Header als Schlüssel-Wert-Objekt parsen
Fügen Sie einen rohen HTTP-Header-Block ein und erhalten Sie ein verlässliches JSON-Objekt für Fehlersuche, Tests, Skripte oder API-Werkzeuge.
Im Browser ausführen – kostenlos
Namen werden kleingeschrieben, äußerer Leerraum wird aus Werten entfernt und wiederholte Namen wie Set-Cookie bleiben in ihrer Reihenfolge als Arrays erhalten, statt überschrieben zu werden. Jede nicht leere Zeile muss dem Aufbau Name: Value entsprechen. Andernfalls erhalten Sie eine klare Fehlermeldung und niemals ein unvollständiges Teilergebnis.
Machen Sie aus kopierten Header-Blöcken strukturierte Daten
Entwicklerwerkzeuge im Browser, Kommandozeilenprogramme, Reverse-Proxys und Serverprotokolle zeigen HTTP-Header häufig als einfache Textzeilen an. Für Menschen ist das gut lesbar, doch Code kann dieses Format nur umständlich durchsuchen, vergleichen oder speichern. Dieser Parser wandelt jede gültige Zeile im Format Name: Value in eine Eigenschaft innerhalb eines einzigen headers-Objekts um. Namen werden kleingeschrieben, weil HTTP-Feldnamen nicht zwischen Groß- und Kleinschreibung unterscheiden. Content-Type und content-type ergeben deshalb dieselbe Eigenschaft. Leerraum rund um den Wert wird entfernt, Doppelpunkte innerhalb des Werts bleiben dagegen unverändert. Das ist bei Zeitangaben, URLs, Autorisierungsschemata und anderen Werten mit zulässigen Satzzeichen wichtig. Sie können das Ergebnis direkt in eine Test-Fixture übernehmen, an ein weiteres Skript übergeben oder mit einer erwarteten Antwort vergleichen. Eine abschließende Leerzeile ist erlaubt, da sie bei kopierten HTTP-Blöcken oft den Nachrichtenkörper abtrennt. Leere oder ungültige Zeilen innerhalb des Blocks werden abgelehnt, damit eine unvollständige Auswertung nicht erfolgreich erscheint.
Bewahren Sie doppelte Header ohne Informationsverlust
Ein gewöhnliches JavaScript-Objekt speichert pro Schlüssel nur einen Wert. Ein einfacher Parser überschreibt daher frühere Werte, sobald derselbe Name erneut vorkommt. Dadurch können wichtige Protokolldaten unbemerkt verloren gehen. Diese Funktion gibt bei einem einmaligen Header eine Zeichenfolge zurück und wandelt die Eigenschaft in ein Array um, wenn derselbe Name unabhängig von der Schreibweise wiederkehrt. Weitere Vorkommen werden in ursprünglicher Reihenfolge angehängt. Die Regel gilt für Set-Cookie, Warning, Link und alle anderen wiederholten Felder, ohne Werte automatisch durch Kommas zusammenzuführen. Das ist beabsichtigt: Verschiedene Header besitzen unterschiedliche Kombinationsregeln, und insbesondere Set-Cookie darf nicht wie eine allgemeine kommagetrennte Liste behandelt werden. Ein leerer Wert ist gültig, sofern der Doppelpunkt vorhanden ist; X-Optional: wird deshalb zu einer leeren Zeichenfolge und nicht zu einem Fehler. Der Parser deutet weder Datumsangaben noch Cookies, Medientypen, Qualitätsgewichte oder Zugangsdaten. Er erhält die Feldwerte als Text, damit eine fachkundige nachgelagerte Komponente sie auswerten kann.
Erkennen Sie fehlerhafte Zeilen frühzeitig
Zuverlässiges Parsen bedeutet nicht nur korrektes Umwandeln, sondern auch konsequentes Ablehnen. Jede Zeile muss mit einem gültigen HTTP-Feldnamen beginnen, unmittelbar gefolgt von einem Doppelpunkt und dem Wert. Feldnamen dürfen die von HTTP zugelassenen Token-Zeichen enthalten, jedoch keine Leerzeichen, Tabulatoren, Klammern, Trennzeichen oder führenden Einrückungen. Veraltete gefaltete Fortsetzungszeilen werden abgelehnt, statt sie an den vorherigen Wert anzuhängen. Das verhindert mehrdeutige Ergebnisse und fördert moderne, normalisierte Eingaben. Schlägt die Prüfung fehl, nennt der Fehler die betroffene Zeile und unterscheidet zwischen einem ungültigen Paar und einem ungültigen Namen. Ein Teilobjekt wird nie zurückgegeben. Damit eignet sich die Funktion für Importabläufe und automatisierte Tests, bei denen ein halber Block gefährlicher wäre als ein Abbruch. Die Verarbeitung ist lokal und deterministisch: Es gibt keine Netzwerkanfragen, zeitabhängigen Felder, Zufallswerte oder externen Abfragen. Derselbe Text erzeugt im Browser und über die API dieselbe JSON-Struktur; der API-Grundpreis beträgt $0.002.
Anwendungsfälle
Erstellen Sie API-Test-Fixtures
Wandeln Sie Header aus einem HTTP-Trace in strukturiertes JSON für eine deterministische Antwort-Fixture um.
Prüfen Sie wiederholte Antwortfelder
Behalten Sie jedes Vorkommen von Set-Cookie, Link oder Warning geordnet bei, ohne frühere Werte zu verlieren.
Validieren Sie importierte Diagnosedaten
Lehnen Sie fehlerhafte Zeilen ab, bevor ein Protokollauszug in Fehlersuche, Support oder Observability einfließt.
Häufige Fragen
Wie werden doppelte Header-Namen dargestellt?
Ein einmaliger Name erhält eine Zeichenfolge. Bei Wiederholung wird sein Wert zu einem Array in Eingabereihenfolge.
Beachten Header-Namen Groß- und Kleinschreibung?
Nein. Namen werden kleingeschrieben, sodass Content-Type und content-type als derselbe Header gelten.
Darf ein Header-Wert einen Doppelpunkt enthalten?
Ja. Nur der erste Doppelpunkt trennt Name und Wert; alle weiteren bleiben Bestandteil des Werts.
Was geschieht bei einer ungültigen Zeile?
Die gesamte Anfrage endet mit einem Eingabefehler, der die Zeile nennt. Ein Teilobjekt wird nie ausgegeben.
Teilt der Parser Cookies oder kommagetrennte Werte auf?
Nein. Werte bleiben bis auf äußeren Leerraum Text. Wiederholte physische Zeilen werden als Arrays dargestellt.
Was kostet die Verwendung per API?
Der Grundpreis beträgt $0.002 pro Anfrage. Die Browser-Version läuft lokal und sendet den Block nicht über das Netzwerk.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev2/http-header-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"}'const res = await fetch("https://api.kit.forhosting.com/dev2/http-header-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/http-header-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/http-header-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Content-Type: application/json\\r\\nCache-Control: no-cache\\r\\nSet-Cookie: theme=dark\\r\\nSet-Cookie: session=abc123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/http-header-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "Content-Type: application/json\r\nCache-Control: no-cache\r\nSet-Cookie: theme=dark\r\nSet-Cookie: session=abc123"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.http_header_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |