596 Stimmen

Wie kann ich die Anfrage-Header von curl sehen, wenn ich eine Anfrage an den Server sende?

Ich möchte die Kopfzeilen der Anfrage sehen, die von curl wenn ich eine Anfrage an den Server sende. Wie kann ich das überprüfen?

0 Stimmen

Diese URL könnte hilfreich sein. helloacm.com/curl

1 Stimmen

Sie können damit Folgendes testen run-node.com/now-use-curl-with-http-echo-com

29voto

GregT Punkte 2124

Ich habe die Antworten hier ausprobiert und festgestellt, dass die nützlichste und einfachste Antwort noch nicht als Antwort aufgeführt ist, aber sie ist es:

curl -v https://example.com/path

Dies druckt die ANFRAGE Kopfzeilen als auch die ANTWORT Header sowie weitere nützliche Informationen wie das SSL-Zertifikat und ob eine bestehende TCP-Verbindung wiederverwendet wurde. -v Flag kann natürlich mit anderen Flags kombiniert werden, z. B. um Weiterleitungen zu folgen und eine HTTP-Authentifizierung zu verlangen:

curl -vL --user my_username https://example.com/path

Ich hoffe, das hilft.

3 Stimmen

Sie ist an oberster Stelle aufgeführt

26voto

igorpcholkin Punkte 898

Ein Befehl wie der folgende zeigt drei Abschnitte an: Anforderungskopfzeilen, Antwortkopfzeilen und Daten (durch CRLF getrennt). Er vermeidet technische Informationen und syntaktisches Rauschen, das von curl hinzugefügt wird.

curl -vs www.stackoverflow.com 2>&1 | sed '/^* /d; /bytes data]$/d; s/> //; s/< //'

Der Befehl erzeugt die folgende Ausgabe:

GET / HTTP/1.1
Host: www.stackoverflow.com
User-Agent: curl/7.54.0
Accept: */*

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: https://stackoverflow.com/
Content-Length: 149
Accept-Ranges: bytes
Date: Wed, 16 Jan 2019 20:28:56 GMT
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: cache-bma1622-BMA
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1547670537.588756,VS0,VE105
Vary: Fastly-SSL
X-DNS-Prefetch-Control: off
Set-Cookie: prov=e4b211f7-ae13-dad3-9720-167742a5dff8; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly

<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="https://stackoverflow.com/">here</a></body>

Beschreibung:

  • -vs - Kopfzeilen hinzufügen (-v), aber Fortschrittsbalken entfernen (-s)
  • 2>&1 - stdout und stderr zu einem einzigen stdout zusammenfassen
  • sed - die von curl erzeugte Antwort mit den folgenden Befehlen bearbeiten
  • /^* /d - Zeilen, die mit '* ' beginnen, entfernen (technische Informationen)
  • /bytes data]$/d - Zeilen, die mit 'bytes data]' enden, entfernen (technische Informationen)
  • s/> // - Präfix '>' entfernen
  • s/< // - Präfix '<' entfernen

0 Stimmen

Dies funktioniert fast perfekt, aber es scheint die Antwort zweimal zu drucken, weil seine in stdout als auch stderror (die Sie an stdout übergeben).

23voto

Haravikk Punkte 2897

Ich weiß, es ist ein bisschen spät, aber meine bevorzugte Methode dafür ist netcat da Sie genau das bekommen, was Sie brauchen. curl gesendet; dies kann sich von der --trace o --trace-ascii Optionen, die Nicht-ASCII-Zeichen nicht richtig anzeigen (sie werden nur als Punkte angezeigt oder müssen dekodiert werden).

Sie können dies ganz einfach tun, indem Sie zwei Terminal-Fenster öffnen, im ersten Typ:

nc -l localhost 12345

Dies öffnet einen abhörenden Prozess auf Port 12345 Ihres lokalen Rechners.

Im zweiten Terminal-Fenster geben Sie Ihren curl-Befehl ein, zum Beispiel:

curl --form 'foo=bar' localhost:12345

Im ersten Terminalfenster sehen Sie genau was curl in der Anfrage gesendet hat.

Jetzt natürlich nc sendet keine Antwort (es sei denn, Sie geben sie selbst ein), so dass Sie den Befehl curl (control-c) unterbrechen und den Vorgang für jeden Test wiederholen müssen.

Dies ist jedoch eine nützliche Option, um Ihre Anfrage zu debuggen, da Sie nirgendwo einen Roundtrip durchführen oder falsche, sich wiederholende Anfragen erzeugen, bis Sie es richtig gemacht haben; wenn Sie mit dem Befehl zufrieden sind, leiten Sie ihn einfach an eine gültige URL um und Sie sind fertig.

Sie können dasselbe auch für jede andere cURL-Bibliothek tun, indem Sie Ihre Anfrage so bearbeiten, dass sie auf die lokale nc hören Sie zu, bis Sie damit zufrieden sind.

3 Stimmen

Bewerten Sie dies. Es ist der sauberste Weg, um mit absoluter Sicherheit zu sehen, was genau curl sendet. Die meisten Leute antworteten mit einer Variation von curl -v was grundsätzlich funktioniert, aber auch jede Menge anderes Rauschen abwirft, insbesondere für HTTPS.

1 Stimmen

Ich stimme @Yitz vollkommen zu. Wenn Sie nur daran interessiert sind, was von curl gesendet wurde (und sich nicht für die Netzwerkdetails interessieren), ist dies der beste Weg.

1 Stimmen

Das hat wunderbar funktioniert. Pro-Tipp - wenn Sie Arch Linux ARM verwenden und es nicht funktioniert, verwenden Sie sudo pacman -S openbsd-netcat . Siehe: bbs.archlinux.org/viewtopic.php?id=171551

6voto

Barry Knapp Punkte 2473

Die Kopfzeilen in einer Datei und die Nutzdaten der Antwort in einer anderen Datei ablegen

curl -k -v -u user:pass  "url" --trace-ascii headers.txt >> response.txt

5voto

juancholas Punkte 51
curl -s -v -o/dev/null -H "Testheader: test" http://www.example.com

Sie können auch Folgendes verwenden -I wenn Sie eine HEAD-Anfrage und nicht eine GET-Anfrage senden wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X