最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

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

PHP 4605浏览 0评论

在做一个获取远程图片大小的功能时,因为只是要获取大小,所以不用下载整张图片,只需要获取头信息就可以了。在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测试抓包截图

php函数get_headers测试抓包截图

可以很清楚的看到图片的内容也被请求回来了。最终确定下来get_headers是GET请求,如果要发起HEAD请求,可以使用fsockopen或者curl。

测试代码下载,包含图片:php函数get_headers测试代码

转载请注明:快乐编程 » php函数get_headers是HEAD请求还是GET请求

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址