PHP cURL获取HTTP响应头

平时做开发时,经常会用到PHP的cURL扩展,用于请求外部HTTP接口。大多数情况下,我们只需要获取口返回的响应体(HTTP response body),但如果我们想获取响应头(HTTP response header)那可以怎么做呢?

可惜的是,cURL扩展没有提供原生的方法让我们(以数组的形式)直接获取响应头,只能通过稍微复杂一点的方法来获取。

直接上代码:

<?php
function headerHandler($curl, $headerLine) {
    $len = strlen($headerLine);
    // HTTP响应头是以:分隔key和value的
    $split = explode(':', $headerLine, 2);
    if (count($split) > 1) {
        $key = trim($split[0]);
        $value = trim($split[1]);
        // 将响应头的key和value存放在全局变量里
        $GLOBALS['G_HEADER'][$key] = $value;
    }
    return $len;
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.baidu.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "headerHandler"); // 设置header处理函数
$responseBody = curl_exec($ch);
curl_close($ch);

var_dump($GLOBALS['G_HEADER']); // 以数组形式打印响应头
var_dump($responseBody); // 打印响应体

打印出来的百度返回的响应头:
在这里插入图片描述


版权声明:本文为ljfrocky原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。