一つは、オプションとして、HTTP HEADを使用してヘッダーだけを要求することができます-Iの中でcurl(1)。
$ curl -I /
長いHTML応答本文はコマンドラインで取得するのが面倒なので、POSTリクエストのフィードバックとしてヘッダーのみを取得したいと思います。ただし、HEADとPOSTは2つの異なる方法です。
curlでPOSTリクエストへの応答ヘッダーのみを表示するにはどうすればよいですか?
一つは、オプションとして、HTTP HEADを使用してヘッダーだけを要求することができます-Iの中でcurl(1)。
$ curl -I /
長いHTML応答本文はコマンドラインで取得するのが面倒なので、POSTリクエストのフィードバックとしてヘッダーのみを取得したいと思います。ただし、HEADとPOSTは2つの異なる方法です。
curlでPOSTリクエストへの応答ヘッダーのみを表示するにはどうすればよいですか?
回答:
-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.
そして
-S, --show-error
When used with -s, --silent, it makes curl show an error message if it fails.
そして
-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.
マニュアルページから。そう
curl -sSL -D - www.acooke.org -o /dev/null
リダイレクトに従い、ヘッダーをstdoutにダンプし、データを/ dev / nullに送信します(これはPOSTではなくGETですが、POSTで同じことを実行できます-データのPOSTにすでに使用しているオプションを追加するだけです)。
出力の「ファイル」がstdoutであることを示すの-後ろに注意してください-D。
-Dは、出力先を示す引数を取ります。単一のダッシュは、標準出力に行く必要があることを意味します。
その他の回答では、応答本文をダウンロードする必要があります。ただし、ヘッダーのみをフェッチするPOSTリクエストを作成する方法があります。
curl -s -I -X POST http://www.google.com
-Iそれ自体ではによって無効にすることができるHEAD要求を行う-X POSTPOST(または任意の他の)要求を実行するために、まだのみヘッダデータを取得します。
GETリクエストを送信し、レスポンスボディ全体をダウンロードしません(または少なくとも出力しません)。-sフラグがも必要です。
GETてPOST上記のコマンドにし、期待どおりに動作します。or any otherそこに鍵があります。
POST一部のデータが必要な場合は機能しません。カールさんのコメント:Warning: You can only select one HTTP request method! You asked for both POST Warning: (-d, --data) and HEAD (-I, --head).
-X HEADは信頼できる解決策ではありません。
次のコマンドは、追加情報を表示します
curl -X POST http://httpbin.org/post -v > /dev/null
完全な応答ではなく、HEADのみを送信するようサーバーに要求できます
curl -X HEAD -I http://httpbin.org/
Note:場合によっては、サーバーがpostとHEADに異なるヘッダーを送信することがあります。しかし、ほとんどの場合、ヘッダーは同じです。
-X HEADと-Iまったく同じです。
-X HEADそれが今で受信するので、サーバーは、異なる応答かもしれないということであるHEAD要求の代わりにGET(または任意の前の要求だったが)
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the Warning: way you want. Consider using -I/--head instead.
多分それは少し極端ですが、私はこの超短いバージョンを使用しています:
curl -svo. <URL>
説明:
-v デバッグ情報を出力します(ヘッダーを含みます)
-o.Webページのデータ(無視したい)を特定のファイル(.この場合はディレクトリであり、宛先が無効であり、出力を無視する)に送信します。
-sプログレスバーなし、エラー情報なし(そうしないと表示されますWarning: Failed to create the file .: Is a directory)
警告:結果は常に失敗します(到達可能かどうかにかかわらず、エラーコードに関して)。シェルスクリプトの条件ステートメントなどでは使用しないでください...
-o.代わりになぜ使用するの-o /dev/nullですか?
-o.は-o /dev/null簡潔にするために使用されています
curl -svo. <url> && echo foo印刷されません。foo-o.curlcurl: (23) Failed writing body
はるかに簡単です–これは私がShortlink追跡を回避するために使用するものです– 次は次のとおりです。
curl -IL http://bit.ly/in-the-shadows
…リンクもたどります。
他の答えはすべての状況でうまくいくわけではありませんが、私が見つけることができる最善の解決策(POST同様に働く)は、ここから取得しました:
curl -vs 'https://some-site.com' 1> /dev/null
headcurl.cmd(Windowsバージョン)
curl -sSkv -o NUL %* 2>&1
-s。-S、-k、-v(これはトラブルシューティングに関するものです)。%*[このスクリプトにすべてのパラメーターを渡す]を意味します(well(https://stackoverflow.com/a/980372/444255)、まあ通常は1つのパラメーターだけです:テストしているURL実際の例(プロキシの問題のトラブルシューティング):
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バージョン
あなたのために.bash_aliases/ .bash_rc:
alias headcurl='curl -sSkv -o /dev/null $@ 2>&1'
-X POSTはパススルーパラメータに追加し、GETが必要な場合はGET(つまりデフォルト)を使用します。応答が異なる場合があるためです。-プロダクションスクリプトで大量のカーリングを行わない限り(診断および開発用ではありません)、帯域幅は少しでも構いません。
curl -s -D - http://yahoo.com -o nul