【问题标题】:PHP get_headers() to generate the header filePHP get_headers() 生成头文件
【发布时间】:2019-02-24 04:21:57
【问题描述】:

我正在努力获取 url 列表的标头响应代码。我需要输出类似于HTTP/1.1 200 OK 等。

使用 cURL - 我使用了这个命令 curl -s -I https://www.pnc.com | grep HTTP(或)curl -I https://www.pnc.com 2>/dev/null | head -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。有人可以给点建议吗?

【问题讨论】:

标签: php html curl


【解决方案1】:

您使用 curl 的命令行调用遵循 301 重定向,然后返回重定向页面的标题。对于使用 PHP 中的 curl 的更可靠的方法,我建议您在此处使用我的答案的变体:

Can PHP cURL retrieve response headers AND body in a single request?

如果您希望像 curl 在命令行上所做的那样透明地遵循重定向,请设置 curl 选项CURLOPT_FOLLOWLOCATION,例如:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

由于对body不感兴趣,所以关闭return transfer选项,即:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

如果您希望执行HEAD 请求,请同时设置以下选项:

curl_setopt($ch, CURLOPT_NOBODY, true);

【讨论】:

  • 非常感谢您的建议。当我添加 HEAD 请求集时,它给了我正确的输出。再次感谢您。
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
相关资源
最近更新 更多