我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文描述如何通过phpget_headers()函数,来获得远程资源的响应头信息,重点是【响应头】。

苏南大叔:php如何通过get_headers获取远程资源的响应头信息? - 获取远程资源头信息
php如何通过get_headers获取远程资源的响应头信息?(图4-1)

大家好,这里是苏南大叔的网络自留地,想写啥就写啥。远程资源的响应头里面,也有隐藏的信息。所以,读取出来也是有意义的。测试环境:win10nginx@1.5.11php@7.4.29nts

函数说明

get_headers(string $url, int $format = 0): array

get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。返回包含有服务器响应一个 HTTP 请求所发送标头的索引或关联数组,如果失败则返回 false。

  • $url,目标 URL。
  • $format,如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。

get_headers($url)

在服务器端去请求别人的资源,别人的资源也是会发送给你相关头信息的。这里使用了一个get_headers函数。但是这个函数有个问题,默认只能获得get请求的header头。

$url = 'https://newsn.net/';
$result = get_headers($url);

苏南大叔:php如何通过get_headers获取远程资源的响应头信息? - get_headers代码一
php如何通过get_headers获取远程资源的响应头信息?(图4-2)

这里需要说明的是:访问https资源的时候,需要开启openssl扩展。参考文章:

get_headers($url,1) 【推荐】

get_headers($url, 1)的第二个参数,设置为1的话,返回值就会有所不同,是解析出键名的,这个操作很奇怪。

$url = 'https://newsn.net/';
$result = get_headers($url, 1);

苏南大叔:php如何通过get_headers获取远程资源的响应头信息? - get_headers代码二
php如何通过get_headers获取远程资源的响应头信息?(图4-3)

stream_context_set_default()

因为get_headers()默认是使用get进行请求的,所以,如果使用其它的method的话,或者有附加的请求头信息的话,可以预先定义stream_context。参考说明文档:

修改资源请求方法为head,并自定义一些header请求信息。测试代码如下:

stream_context_set_default(
    array(
        'http' => array(
            'method' => 'HEAD',
            'header'=>"Accept-language: zh-cn\r\n" .
              "Cookie: aa=bb;cc=dd;\r\n".
              'User-Agent: fake ua',
        )
    )
);
$url = 'http://test/test.php';
$result = get_headers($url,1);
var_dump($result);

苏南大叔:php如何通过get_headers获取远程资源的响应头信息? - get_headers代码三
php如何通过get_headers获取远程资源的响应头信息?(图4-4)

远程服务器的测试代码,用于回显定制信息:

header("who:苏南大叔");
header("_method:".$_SERVER['REQUEST_METHOD']);
header("_cookie:".json_encode($_COOKIE,true));
header("_user-agent:".$_SERVER['HTTP_USER_AGENT']);

相关文章

总结

本文描述的是获得远程资源的头信息,更多php经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php