教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php函数get_headers是HEAD请求或GET请求

php函数get_headers是HEAD请求或GET请求

发布时间:2017-08-06   编辑:jiaochengji.com
本文对php函数get_headers做下分析,证明其是Head请求还是Get请求,有需要的朋友参考下吧。

在做一个获取远程图片大小的功能时,因为只是要获取大小,所以不用下载整张图片,只需要获取头信息就可以了。

在php手册上看到get_headers能直接返回头信息,一行代码就搞定了。

问题:
get_headers到底是不是HEAD请求呢?
如果是GET请求,那不是还要下载图片吗?

于是笔者针对这个问题,进行了测试。

测试过程

测试环境是ubuntu 12.04 桌面版,web服务器是apache,支持HEAD请求。

在本地web根目录建立一个文件test.php,用get_headers来获取一张远程图片的头信息,代码:
 

复制代码 代码示例:
$imageurl = 'http://127.0.0.1/1.png';
$headers = get_headers($imageurl);
 

其实图片也是本地的一张图片,但是确实是“远程”的,远程图片也可以理解为url地址的图片。

使用抓包工具tcpdump监听本地80端口:
 

复制代码 代码示例:
sudo tcpdump -i lo -nnA 'src port 80'

而后访问test.php,抓到的包关键部分截图如下:
php函数get_headers测试抓包截图

可以看到图片的内容也被请求回来了。

最终确定下来get_headers是GET请求,如果要发起HEAD请求,可以使用fsockopen或者curl。

测试代码下载(包含图片):php函数get_headers的测试代码

您可能感兴趣的文章:
php函数get_headers是HEAD请求或GET请求
php get_headers检测URL是否有效的方法
php使用请求头信息获取远程图片大小
PHP get_headers检测远端文件是否存在的方法
php get_headers函数讲解及用法介绍
php get_headers 判断URL是否有效的方法介绍
php模拟多线程的实例分享
php使用curl判断远程文件是否存在的代码
php判断远程url是否有效的方法
django如何实现跨域请求

关键词: get_headers   
[关闭]
~ ~