-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 Option hinzu, die Sie bereits für POST-Daten verwenden).
Beachten Sie das -
nach dem, -D
was anzeigt, dass die Ausgabe "Datei" stdout ist.
curl -s -D - http://yahoo.com -o nul
-D
ein Argument, das besagt, wohin die Ausgabe gehen soll. Der einzelne Strich bedeutet, dass es auf stdout gehen sollte.Für die anderen Antworten muss der Antworttext heruntergeladen werden. Es gibt jedoch eine Möglichkeit, eine POST-Anforderung zu erstellen, bei der nur der Header abgerufen wird:
Ein
-I
selbst führt eine HEAD-Anforderung aus, die überschrieben werden kann-X POST
, um eine POST-Anforderung (oder eine andere Anforderung) auszuführen und dennoch nur die Header-Daten abzurufen.quelle
GET
Anfrage und lädt nicht den gesamten Antworttext herunter (oder gibt ihn zumindest nicht aus). Die-s
Flagge ist nicht notwendig.GET
mitPOST
in obigem Befehl , und es wird wie erwartet.or any other
ist dort der Schlüssel.POST
einige Daten benötigen. Curl sagt:Warning: You can only select one HTTP request method! You asked for both POST Warning: (-d, --data) and HEAD (-I, --head).
-X HEAD
ist hier keine zuverlässige Lösung.Der folgende Befehl zeigt zusätzliche Informationen an
Sie können den Server bitten, nur HEAD anstelle der vollständigen Antwort zu senden
Note:
In einigen Fällen sendet der Server möglicherweise unterschiedliche Header für Post und HEAD. In fast allen Fällen sind die Header jedoch gleich.quelle
-X, --request
richtig verstehe ,-X HEAD
ergibt sich immer noch "eine Menge Daten", aber es gibt-I, --head
welche, die zu dem führen sollten, was Sie erwarten.-X HEAD
und-I
sind genau gleichwertig.-X HEAD
ist, dass der Server möglicherweise anders reagiert, da er jetzt eineHEAD
Anfrage anstelle einerGET
(oder was auch immer die vorherige Anfrage war) empfängtWarning: Setting custom HTTP method to HEAD with -X/--request may not work the Warning: way you want. Consider using -I/--head instead.
Für lange Antwortkörper (und verschiedene andere ähnliche Situationen) ist die Lösung, die ich verwende, immer die Leitung zu
less
, alsooder
wird den Job machen.
quelle
HEAD
Anfrage aus, auf die viele Server unterschiedlich reagieren. Der zweite gibt eineGET
Anfrage heraus, die eher dem entspricht, wonach wir hier suchen.Vielleicht ist es ein bisschen extrem, aber ich benutze diese super kurze Version:
Erläuterung:
-v
Debug-Informationen drucken (einschließlich Header)-o.
Senden Sie Webseitendaten (die wir ignorieren möchten) an eine bestimmte Datei,.
in diesem Fall an ein Verzeichnis, das ein ungültiges Ziel ist und die Ausgabe ignoriert.-s
Kein Fortschrittsbalken, keine Fehlerinformationen (sonst würden Sie sehenWarning: Failed to create the file .: Is a directory
)Warnung: Ergebnis schlägt immer fehl (in Bezug auf Fehlercode, ob erreichbar oder nicht). Verwenden Sie diese Option beispielsweise nicht in bedingten Anweisungen in Shell-Skripten ...
quelle
-o.
statt verwenden-o /dev/null
?-o.
wird gegen der-o /dev/null
Kürze verwendetcurl -svo. <url> && echo foo
wird nicht gedruckt,foo
da-o.
makecurl
einen Code ungleich Null (= Fehler) zurückgibt :curl: (23) Failed writing body
.Viel einfacher - das ist es, was ich benutze, um Shortlink-Tracking zu vermeiden - ist das Folgende:
… Was auch Links folgt .
quelle
Während die anderen Antworten nicht in allen Situationen für mich funktioniert haben, ist die beste Lösung, die ich finden konnte (auch mit der ich arbeiten kann
POST
), von hier aus entnommen :curl -vs 'https://some-site.com' 1> /dev/null
quelle
headcurl.cmd (Windows-Version)
-s
.-S
,-k
,-v
(hier geht es um Fehlerbehebung, oder?),%*
bedeutet [alle Parameter an dieses Skript weitergeben] (gut ( https://stackoverflow.com/a/980372/444255 ), normalerweise ist das nur ein Parameter: die URL, die Sie testenBeispiel aus der Praxis (zur Fehlerbehebung bei Proxy-Problemen):
Linux-Version
für dein
.bash_aliases
/.bash_rc
:quelle
-X POST
den Passthrough-Parametern hinzu. Wenn Sie GET möchten, verwenden Sie GET (dh Standard), da die Antworten unterschiedlich sein können. - Wenn Sie in Produktionsskripten nicht viel Curling machen (nicht für Diagnose und Entwicklung), ist mir ein bisschen Bandbreite egal.