Wget HEAD リクエスト?

Wget HEAD リクエスト?

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とは対照的です)。GETPOST

これは、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

Ubuntu 19.10 マニュアルページ: Wget

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

関連情報