我正在努力获取 URL 列表的 header 响应代码。我需要输出像 HTTP/1.1 200 OK
等
使用 cURL - 我使用了这个命令 curl -s -I https://www.pnc.com | grep HTTP
(或)curl -I https://www.pnc.com 2>/dev/null |头-n 1
。而且,我得到的输出为 HTTP/1.1 200 OK
。
使用 PHP - 我使用 get_headers() 命令在 PHP 中执行相同的操作。我得到的输出为 HTTP/1.1 301 Moved Permanently
。
这是我使用的代码。
$line = "https://www.pnc.com";
$myheader = get_headers($line,1);
echo "$myheader[0]";
运行此命令后,我得到的输出为 HTTP/1.1 301 Moved Permanently
。有人可以提出任何建议吗?
最佳答案
您使用 curl 的命令行调用遵循 301 重定向,然后返回重定向页面的 header 。对于使用 PHP 中的 curl 的更可靠的方法,我建议您在此处使用我的答案的变体:
Can PHP cURL retrieve response headers AND body in a single request?
如果您希望像 curl 在命令行上所做的那样透明地遵循重定向,请设置 curl 选项 CURLOPT_FOLLOWLOCATION
,例如:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
由于对本体不感兴趣,所以关闭回传选项,即:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
如果您希望执行 HEAD
请求,还可以设置以下选项:
curl_setopt($ch, CURLOPT_NOBODY, true);
关于PHP get_headers() 生成头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415237/