我想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
请求(而不是GET
或POST
)。
这是检查 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
--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/