763 Stimmen

Nur Antwort-Header von HTTP POST mit cURL erhalten

Man kann nur die Kopfzeilen mit HTTP HEAD anfordern, als Option -I において curl(1) .

$ curl -I /

Lange HTML-Antwortkörper sind in der Befehlszeile nur schwer zu erhalten, daher möchte ich nur den Header als Rückmeldung für meine POST-Anfragen erhalten. HEAD und POST sind jedoch zwei verschiedene Methoden.

Wie bringe ich cURL dazu, bei einer POST-Anfrage nur die Antwort-Header anzuzeigen?

33voto

exebook Punkte 29372

Vielleicht ist es ein bisschen extrem, aber ich benutze diese super kurze Version:

curl -svo. <URL>

Erläuterung:

-v Debug-Informationen ausgeben (einschließlich Kopfzeilen)

-o. Webseiten-Daten (die wir ignorieren wollen) an eine bestimmte Datei senden, . in diesem Fall ein Verzeichnis, das ein ungültiges Ziel ist und dazu führt, dass die Ausgabe ignoriert wird.

-s kein Fortschrittsbalken, keine Fehlerinformationen (sonst würden Sie sehen Warning: Failed to create the file .: Is a directory )

Warnung: Ergebnis schlägt immer fehl (in Form eines Fehlercodes, ob erreichbar oder nicht). Nicht verwenden in, sagen wir, bedingte Anweisungen in Shell-Skripting...

16voto

Während die anderen Antworten nicht in allen Situationen für mich funktioniert haben, war die beste Lösung, die ich finden konnte (die Arbeit mit POST auch), entnommen aus aquí :

curl -vs 'https://some-site.com' 1> /dev/null

13voto

Frank Nocke Punkte 8618

headcurl.cmd (Windows-Version)

curl -sSkv -o NUL %* 2>&1
  • Ich möchte keinen Fortschrittsbalken -s ,
  • aber ich möchte Fehler -S ,
  • sich nicht um gültige https-Zertifikate zu kümmern -k ,
  • hohe Ausführlichkeit -v (hier geht es um die Fehlersuche, nicht wahr?),
  • keine Ausgabe (auf saubere Weise).
  • Oh, und ich möchte weiter stderr à stdout so dass ich das Ganze mit grep durchsuchen kann (da die meisten oder alle Ausgaben in stderr erscheinen)
  • %* bedeutet [alle Parameter an dieses Skript übergeben] (well( https://stackoverflow.com/a/980372/444255 ), das ist normalerweise nur ein Parameter: die URL, die Sie testen

ein Beispiel aus der Praxis (zur Behebung von Proxy-Problemen):

C:\depot>headcurl google.ch | grep -i -e http -e cache

Hostname was NOT found in DNS cache
GET HTTP://google.ch/ HTTP/1.1
HTTP/1.1 301 Moved Permanently
Location: http://www.google.ch/
Cache-Control: public, max-age=2592000
X-Cache: HIT from company.somewhere.ch
X-Cache-Lookup: HIT from company.somewhere.ch:1234

Linux-Version

für Ihre .bash_aliases / .bash_rc :

alias headcurl='curl -sSkv -o /dev/null $@  2>&1'

0voto

-D, --dump-header Schreibt die Protokoll-Header in die angegebene Datei.

   This  option  is handy to use when you want to store the headers
   that a HTTP site sends to you. Cookies from  the  headers  could
   then  be  read  in  a  second  curl  invocation by using the -b,
   --cookie option! The -c, --cookie-jar option is however a better
   way to store cookies.

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