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

您还可以传递-O /dev/null以防止wget将 HTTP 响应写入文件。

答案3

没有必要卷曲

使用 Wget,添加--spider意味着您想要发送HEAD请求(而不是GETPOST)。

这是检查 URL 是否响应的一种简单方法。例如,您可以在脚本检查中使用它,该HEAD操作将确保您不会对网络或目标 Web 服务器施加任何负载。

附加信息:如果 Wget 在执行时从服务器收到 HTTP 错误 500,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

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/

相关内容