一つは、オプションとして、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 POST
POST(または任意の他の)要求を実行するために、まだのみヘッダデータを取得します。
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.
curl
curl: (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