HTTP HEAD
を使用してリクエストを送信したいのですがwget
、可能ですか?
答え1
これは wget ではありませんが、curl を使用すると簡単に実行できます。
curl -I http://www.superuser.com/
次の出力が生成されます:
HTTP/1.1 301 Moved Permanently
Content-Length: 144
Content-Type: text/html; charset=UTF-8
Location: http://superuser.com/
Date: Sat, 09 Oct 2010 19:11:50 GMT
答え2
試す:
wget -S --spider www.example.com
HTTP 応答をファイルに書き込むのを-O /dev/null
防ぐために渡すこともできます。wget
答え3
必要はありませんカール。
Wget では、 を追加すると、リクエスト--spider
を送信することを意味します(またはHEAD
とは対照的です)。GET
POST
これは、URL が応答するかどうかを確認するための優れた最小限の方法です。たとえば、これをスクリプト化されたチェックで使用すると、このHEAD
操作によって、ネットワークにも対象の Web サーバーにも負荷がかからないことが保証されます。
ボーナス情報: Wget が を実行するときにサーバーから HTTP エラー 500 を受け取ると、同じ URL に対してHEAD
を実行しますGET
。この設計の理由はわかりません。これが、 と の両方が表示される理由です。HEAD
そしてサーバーに対して実行されている要求GET
。問題がなければ、HEAD
要求のみが実行されます。Wget--tries
の試行を 1 回だけに制限するオプションを使用して、この機能を無効にすることができます。
全体として、URL が応答しているかどうかをテストするには、これをお勧めします。
# This works in Bash and derivatives
wget_output=$(wget --spider --tries 1 $URL 2>&1)
wget_exit_code=$?
if [ $wget_exit_code -ne 0 ]; then
# Something went wrong
echo "$URL is not responding"
echo "Output from wget: "
echo "$wget_output"
else
echo "Check succeeded: $URL is responding"
fi
答え4
--method=HTTP-Method
For the purpose of RESTful scripting, Wget allows sending of other HTTP Methods
without the need to explicitly set them using --header=Header-Line. Wget will use
whatever string is passed to it after --method as the HTTP Method to the server.
私の bash スクリプトで以下を使用し、期待どおりに動作することを確認できました。
wget --method=HEAD https://www.website.com/