
HTTP-Anfrage prüfen: curl, Rohnachricht und HAR-Datei
cURL-Kopien formatieren, rohe HTTP-Anfragen und -Antworten parsen und HAR-Exporte lesen, direkt im Browser: nichts wird gesendet oder wiederholt.
Eine Anfrage, drei Arten, sie zu lesen: cURL-Befehl, Rohnachricht, HAR-Datei
Wenn eine API-Integration sich merkwürdig verhält, ist der Beweis fast immer ein HTTP-Austausch, den Sie aus den DevTools kopieren können. Das Problem ist die Form, in der er ankommt: Das Copy as cURL von Chrome ist eine einzige endlos lange Zeile, eine eingefügte Antwort ist ein Header-Block mit darunterliegendem Body, und ein HAR-Export ist eine JSON-Datei mit Hunderten von Einträgen. Der cURL-Formatter macht aus einem Copy as cURL oder Copy as fetch lesbares mehrzeiliges cURL, wahlweise auch HTTP/1.1, eine .http-Datei, JavaScript fetch, Python requests, Go oder PHP. Der HTTP-Message-Parser liest eine rohe Anfrage, eine Antwort oder einen Header-Block, behält doppelte Header und formatiert einen JSON-Body. Der HAR-Inspector öffnet eine ganze aufgezeichnete Sitzung, grenzt sie auf den fehlgeschlagenen Aufruf ein und kopiert genau diesen Aufruf als cURL zurück. Alle drei arbeiten mit eingefügtem Text in Ihrem Browser: FastMinify sendet die Anfrage nie, ruft die eingefügte URL nie ab und hat weder Runner noch Proxy, ein Token in der Einfügung bleibt also in Ihrem Tab. Dieser Leitfaden zeigt, welches Werkzeug welche Frage beantwortet, wie Sie eine Anfrage debuggen, die im Browser funktioniert und im Skript nicht, welche Fehler Zugangsdaten preisgeben oder in die Irre führen, wie eine HTTP-Nachricht aufgebaut ist und wie Sie dieselben Prüfungen im Terminal und in Node durchführen. Die Werkzeuge liegen im HTTP-Werkzeug-Hub.
Welches Werkzeug welche Frage beantwortet
Die drei Werkzeuge lesen, übersetzen und teilen einen HTTP-Austausch. Sie führen ihn nicht aus.
Jedes Werkzeug endet dort, wo ein anderes beginnt. Geben Sie an die Nachbarwerkzeuge oder an Ihren eigenen Code ab.
Einen API-Aufruf anhand einer kopierten Anfrage debuggen
Fügen Sie das Copy as cURL in den cURL-Formatter ein und lesen Sie es Zeile für Zeile: Es enthält alles, was der Browser hinzugefügt hat, nicht nur das, was Ihr Code braucht.
Fügen Sie die Antwort in den HTTP-Message-Parser ein. Statuszeile, Header-Tabelle und Body erscheinen getrennt.
Öffnen Sie den Export im HAR-Inspector und grenzen Sie die Liste ein, bevor Sie ein Detail lesen.
Vier Fehler, die Zugangsdaten preisgeben oder Sie in die Irre führen
Ein Copy as cURL aus einer authentifizierten Sitzung enthält Ihre Header Cookie und Authorization, und jeder, der das Ticket liest, kann den Aufruf als Sie wiederholen. Der Schalter Geheimnisse entfernen lässt Cookie, Authorization, Referer, sec-ch-* sowie die Werte von -u und -b aus der Kopie weg. Im Formatter und beim Als-cURL-Kopieren des Parsers ist er standardmäßig aus, im HAR-Inspector an. Er wirkt nur auf Header: Ein Token im Query-String (?access_token=), im Request-Body, in einem eigenen Header wie X-Api-Key oder in einem Antwort-Body bleibt genau dort, wo es war. Lesen Sie die Ausgabe, bevor Sie sie einfügen, und tauschen Sie alles aus, was Ihren Rechner schon verlassen hat. Der Secrets-Scanner hilft, einen übersehenen Schlüssel zu finden.
Die Ladezeit des HAR-Inspectors ist die Dauer des längsten einzelnen Eintrags, nicht die Ladezeit der Seite, und Größe addiert die in jedem Eintrag erfassten Body-Größen. Sie beantworten „welcher Aufruf war am langsamsten“ und „wie viele Daten flossen“, nicht das, was Lighthouse misst. Requests laufen parallel, die Summe der Zeiten ist deshalb auch nicht die Seitenzeit. Gecachte Antworten und komprimierte Bodys lassen die Größenangaben von denen in der Fußzeile des Network-Panels abweichen.
Der Formatter versteht die von den DevTools erzeugte Teilmenge von cURL und ignoriert den Rest stillschweigend. Optionen wie -L, -s, -k, --insecure, -v und -o fallen aus der Ausgabe heraus: Ein Befehl, der sich auf -L zum Folgen einer Weiterleitung oder auf -k zum Überspringen der Zertifikatsprüfung verließ, verliert dieses Verhalten bei der Übersetzung. Manche Eingaben werden mit klarer Meldung abgelehnt: Multipart-Uploads (-F), -T-Datei-Uploads, @Datei-Bodys, {{Variablen}} von REST Client, .http-Dateien mit mehreren Anfragen, axios-Snippets sowie fetch-Aufrufe mit Template-Literalen oder ungebundenen Variablen. Eine eingefügte Antwort ist keine Anfrage, daraus lässt sich kein cURL machen.
Mehrere Ausgaben rücken einen JSON-Body neu ein: das mehrzeilige cURL, die Ausgaben HTTP/1.1 und .http, JavaScript fetch und Python requests, das ihn in ein json=-Literal umwandelt. Das einzeilige cURL behält den Body so, wie Sie ihn eingefügt haben. Für die meisten APIs ist das harmlos, fatal aber, wenn der Server eine Signatur über genau diese Bytes prüft, wie es Webhook-Endpunkte oft tun: Ein einziges zusätzliches Leerzeichen, und der HMAC passt nicht mehr. Der Leitfaden zu Hash und HMAC erklärt, wie solche Signaturen entstehen.
Aufbau einer HTTP-Nachricht und was jedes Werkzeug ansieht
Eine HTTP/1.1-Nachricht ist Klartext (RFC 9112), ihre Bedeutung legt RFC 9110 fest. Anfrage und Antwort teilen sich das Layout.
Die Werkzeuge wandeln zwischen diesen Formen um, deshalb kann eine kopierte Anfrage jede davon werden.
Eine kurze Leseordnung erspart die meisten langen Debug-Sitzungen.
Die drei Werkzeuge, Schritt für Schritt
Der cURL-Formatter formatiert beim Einfügen neu, ohne Senden-Schaltfläche. In Chrome klicken Sie im Network-Tab mit der rechten Maustaste auf die Anfrage, dann Copy, dann Copy as cURL (bash).
Befehl einfügen
Ein Copy as cURL, ein Copy as fetch, eine .http-Datei mit einer Anfrage oder eine rohe HTTP/1.1-Anfrage werden erkannt. Zeilenfortsetzungen werden für Sie zusammengefügt.
Sprache und Layout wählen
cURL, HTTP/1.1, .http, JavaScript fetch, Python requests, Go net/http oder PHP curl, im mehrzeiligen oder einzeiligen Layout.
Geheimnisse entfernen vor dem Teilen aktivieren
Es lässt Cookie, Authorization, Referer, sec-ch-* und die Werte von -u und -b aus der Kopie weg. Query-Strings und Bodys bleiben unberührt.
Ergebnis kopieren oder herunterladen
Jede Sprache hat ihren eigenen Dateinamen (formatted-curl.sh, formatted-request.http, formatted-requests.py und so weiter). Ein Parse-Fehler nennt, was abgelehnt wurde und warum.
Der HTTP-Message-Parser stellt eine eingefügte Nachricht als Startzeile, Header-Tabelle und Body dar.
Nachricht einfügen
Eine Anfrage, eine Antwort, ein reiner Header-Block oder die Ausgabe von curl -v. LF- und CRLF-Zeilenenden funktionieren beide.
Erkannte Art prüfen
Das Werkzeug beschriftet sie als HTTP-Request, HTTP-Response oder Nur Header und zeigt die Anzahl der Header. Doppelte bleiben als eigene Zeilen stehen.
Body lesen
Ein JSON-Body wird standardmäßig formatiert, mit einem Schalter für die Rohansicht. Chunked-Bodys werden nicht zusammengesetzt.
Eine Anfrage als cURL kopieren
Dazu braucht es eine Anfrage mit absoluter URL oder einem Host-Header. Mit nur einem Host-Header wird das Schema geraten: http für localhost, 127.0.0.1 oder Port 80, sonst https. Der Schalter Kopie bereinigen ist standardmäßig aus.
Der HAR-Inspector liest die Datei in Ihrem Tab und ruft die aufgeführten URLs nie ab.
HAR exportieren
Nutzen Sie im Network-Panel das Download-Symbol (Export HAR). Exporte aus Chrome, Firefox, Edge, Charles und HTTP Toolkit öffnen sich bis 50 MB; ab 20 MB kann das Filtern träge werden.
Datei ablegen oder JSON einfügen
Eine .har- oder .json-Datei oder das HAR-1.2-JSON selbst. Die Beispiel-Schaltfläche lädt einen kleinen Mitschnitt zum Ausprobieren der Filter.
Liste eingrenzen
Typ-Filter (XHR, JS, CSS, Img, Media, Font, Doc, Andere, Fehler), eine Methode, eine Statusklasse und die Suche „URL enthält“. Der Typ stammt aus dem Eintrag, wenn Chrome ihn aufzeichnet, sonst aus dem MIME-Typ der Antwort.
Aufruf öffnen und extrahieren
Lesen Sie Request- und Response-Header, Payload und Body-Vorschau. cURL kopieren, HTTP/1.1 kopieren oder URL kopieren, oder die Datei herunterladen; mit aktivem Geheimnisse entfernen heißt sie sanitized.har, ohne die Header Cookie, Set-Cookie, Authorization, Referer und sec-ch-* und ohne die Cookie-Arrays.
Ein paar Grenzen, die Sie kennen sollten, bevor Sie sich darauf verlassen.
Dieselben Prüfungen im Terminal und in Node
Wenn Sie einen Befehl ausführen können, zeigt curl dieselben Daten, die der Parser aufbereitet. Halten Sie Tokens in Umgebungsvariablen, nicht in dem Befehl, den Sie in ein Ticket einfügen.
Einfaches Beispiel
Ein HAR ist JSON, wenige Zeilen listen die fehlgeschlagenen Aufrufe. Anders als der Fehler-Zähler des Inspectors behält dieser Filter auch Status 0.
Einfaches Beispiel
Nehmen Sie die Ausgabe von Copy as fetch, verlegen Sie das Secret in eine Umgebungsvariable und geben Sie aus, was zurückkommt. Die vom Formatter erzeugten Snippets sind ein Ausgangspunkt derselben Art.
Einfaches Beispiel
Nichts zu installieren und nichts gesendet: Der cURL-Formatter, der HTTP-Message-Parser und der HAR-Inspector decken Lesen, Übersetzen und Teilen einer Anfrage ab. Die Kompromisse: keine Wiederholung, eine Teilmenge von cURL, kein Zeit-Wasserfall und eine Bereinigung, die nur Header kennt. Für einen echten Test führen Sie den Aufruf im Terminal, in Postman oder in Ihrer eigenen Testsuite aus; um eine Spezifikation statt eines Aufrufs zu prüfen, nutzen Sie den OpenAPI-Validator.
Fazit
Ein HTTP-Austausch ist nur Text, und Debugging heißt meist, ihn in der richtigen Form zu lesen. Der cURL-Formatter macht ein Copy as cURL lesbar und übertragbar, der HTTP-Message-Parser legt eine rohe Anfrage oder Antwort mit doppelten Headern und JSON-Body übersichtlich aus, und der HAR-Inspector grenzt eine aufgezeichnete Sitzung auf den fehlgeschlagenen Aufruf ein. Keiner von ihnen sendet etwas: Sie behalten die Kontrolle darüber, was Ihren Browser verlässt, und das zählt, denn diese Einfügungen enthalten Cookies und Tokens. Entfernen Sie Geheimnisse vor dem Teilen, denken Sie daran, dass das nur Header bereinigt, und lesen Sie die Zähler als das, was sie sind. Der HTTP-Werkzeug-Hub bündelt die Nachbarwerkzeuge für URLs und Cookies.
Eine Anfrage im Browser prüfen
Verwandte Artikel

Header und Payload eines JWT dekodieren oder ein Test-Token signieren, direkt im Browser: HS256, RS256, ES256, ohne Secret an einen Drittserver zu senden.

Länge, Entropie, Sonderzeichen: Erzeugen Sie ein starkes Passwort im Browser mit Web Crypto — und wissen Sie, was das Werkzeug nicht garantiert.

Testen Sie eine JavaScript-Regex, prüfen Sie Capture-Gruppen und sehen Sie ein $1-Replace im Browser, bevor das Muster in Produktion landet.