712 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?

910voto

andrew cooke Punkte 43891
-D, --dump-header <file>
       Write the protocol headers to the specified file.

       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.

y

-S, --show-error
       When used with -s, --silent, it makes curl show an error message if it fails.

y

-L/--location
      (HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response
      code), this option will make curl redo the request on the new place. If used together with -i/--include or -I/--head, headers from  all  requested
      pages  will  be  shown.  When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different
      host, it won’t be able to intercept the user+password. See also --location-trusted on how to change this. You can limit the amount of redirects to
      follow by using the --max-redirs option.

      When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a GET if the HTTP
      response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following  request  using  the  same  unmodified
      method.

aus der Manpage. also

curl -sSL -D - www.acooke.org -o /dev/null

folgt der Umleitung, gibt die Kopfzeilen nach stdout aus und sendet die Daten an /dev/null (das ist ein GET, kein POST, aber Sie können das Gleiche mit einem POST tun - fügen Sie einfach die Option hinzu, die Sie bereits für POST-Daten verwenden)

beachten Sie die - nach dem -D was bedeutet, dass die Ausgabedatei stdout ist.

265voto

siracusa Punkte 3116

Bei den anderen Antworten muss der Antwortkörper heruntergeladen werden. Aber es gibt eine Möglichkeit, eine POST-Anfrage zu stellen, die nur die Kopfzeile abruft:

curl -s -I -X POST http://www.google.com

Eine -I führt von sich aus eine HEAD-Anfrage aus, die durch -X POST um eine POST-Anfrage (oder eine andere) durchzuführen und trotzdem nur die Kopfdaten zu erhalten.

106voto

zainengineer Punkte 11921

Der folgende Befehl zeigt zusätzliche Informationen an

curl -X POST http://httpbin.org/post -v > /dev/null

Sie können den Server bitten, nur HEAD statt der vollständigen Antwort zu senden

curl -X HEAD -I http://httpbin.org/

Note: In einigen Fällen kann der Server unterschiedliche Header für POST und HEAD senden. Aber in fast allen Fällen sind die Header gleich.

61voto

fiatjaf Punkte 10663

Bei langen Antwortkörpern (und verschiedenen anderen ähnlichen Situationen) ist die Lösung, die ich verwende, immer eine Leitung zu less also

curl -i https://api.github.com/users | less

o

curl -s -D - https://api.github.com/users | less

wird die Aufgabe erfüllen.

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...

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