Запросити запит HEAD?


52

Я хочу надіслати HTTP HEADзапит, використовуючи wget. Це можливо?

Відповіді:


59

Це не 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

Це саме те, що я хочу.
Xiè Jìléi

1
-Iеквівалентно --head.
Ніколя Марчільдон

1
Якщо вам потрібен самопідписаний сертифікат https, ви також можете додати -kабо--insecure
Майк Аскі

36

Спробуйте:

wget -S --spider www.example.com

Ви також можете пройти, -O /dev/nullщоб не wgetписати відповідь HTTP у файл.


2
-Sбуде показувати заголовки, але він виконує GET, а НЕ HEAD. Іншими словами, він отримає всю URL-адресу.
Дан Даскалеску

9
wget -S --spider http://localhostЖурнал, створений на сервері apache,127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 "-" "Wget/1.13.4 (linux-gnu)"
Casual Coder

20

Немає потреби в завитках .

За допомогою Wget додавання --spiderозначає, що ви хочете надіслати HEADзапит (на відміну від GETабо POST).

Це чудовий мінімалістичний спосіб перевірити, відповідає URL чи ні. Наприклад, ви можете використовувати це в скриптах, і ця HEADоперація переконається, що ви не покладете жодного навантаження ні на мережу, ні на цільовий веб-сервер.

Інформація про бонус: Якщо Wget отримує помилку 500 HTTP від ​​сервера під час його виконання HEAD, тоді він перейде до виконання GETпроти тієї ж URL-адреси. Я не знаю мотивів такої конструкції. Це причина , чому ви можете побачити одночасно HEAD іGET запит виконується на сервері. Якщо нічого поганого, тоді HEADвиконується лише запит. Ви можете відключити цю функціональність за допомогою --triesможливості обмежити Wget лише однією спробою.

Загалом, рекомендую це перевірити, чи відповідає 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

wget -S отримує файл:

Довжина вмісту: 2316, Довжина: 2316 (2.3K) [текст / звичайна], Збереження в: `index.html '

wget --spider отримує заголовки:

Увімкнено режим павука. Перевірте, чи існує віддалений файл., Довжина: не вказано [текст / звичайний] Віддалений файл існує.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.