it-swarm.com.de

Es wird nur der Antwortheader von HTTP POST mit curl abgerufen

Man kann nur die Header mit HTTP HEAD anfordern, als Option -I in curl(1).

$ curl -I /

Langwierige HTML-Antworttextkörper sind in der Befehlszeile sehr schwierig. Daher möchte ich nur den Header als Feedback für meine POST -Anfragen erhalten. Bei HEAD und POST handelt es sich jedoch um zwei verschiedene Methoden.

Wie kann ich Curl so einstellen, dass nur Antwortheader für eine POST -Anforderung angezeigt werden?

493
Jonathan Allard
-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.

und

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

und

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

von der Manpage. damit

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

folgt Weiterleitungen, speichert die Header in stdout und sendet die Daten an/dev/null (das ist ein GET, kein POST, aber Sie können dasselbe mit einem POST tun - fügen Sie einfach die gewünschte Option hinzu bereits für POST-Daten verwenden)

beachten Sie den - nach dem -D, der angibt, dass die Ausgabe "Datei" stdout ist.

699
andrew cooke

Für die anderen Antworten muss der Antworttext heruntergeladen werden. Es gibt jedoch eine Möglichkeit, eine POST -Anforderung zu erstellen, die nur den Header abruft:

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

Ein -I führt selbst eine HEAD -Anforderung aus, die von -X POST überschrieben werden kann, um eine POST -Anforderung (oder eine andere) auszuführen und trotzdem nur den Header abzurufen Daten.

138
siracusa

Der folgende Befehl zeigt zusätzliche Informationen an

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

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

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

Note: Korrekt konfigurierte/programmierte Webserver reagieren anders als der Beitrag, da es sich um eine HEAD Anforderung handelt, die nicht POST ist. Funktioniert aber meistens

47
zainengineer

Bei langen Antwortkörpern (und in verschiedenen ähnlichen Situationen) ist die von mir verwendete Lösung immer, zu less weiterzuleiten

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

oder

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

werde den Job machen.

47
fiatjaf

Viel einfacher - das ist, was ich benutze, um Shortlink-Tracking zu vermeiden - ist Folgendes:

curl -IL http://bit.ly/in-the-shadows

… das folgt auch Links .

15
kaiser

Obwohl die anderen Antworten nicht in allen Situationen bei mir geklappt haben, habe ich hier die beste Lösung gefunden (auch mit POST gearbeitet) :

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

13

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

curl -svo. <URL>

Erläuterung:

-v gibt Debug-Informationen aus (einschließlich Überschriften)

-o. Sendet Webseiten-Daten (die ignoriert werden sollen) an eine bestimmte Datei, in diesem Fall an ., die ein Verzeichnis und ein ungültiges Ziel ist und bewirkt, dass die Ausgabe ignoriert wird.

-s keine Fortschrittsanzeige, keine Fehlerinformationen (ansonsten würde Warning: Failed to create the file .: Is a directory angezeigt)

8
exebook