我需要在PHP Curl调用上添加哪些内容才能读取响应的自定义标头?

时间:2018-11-12 21:03:59

标签: php nginx http-headers

我尝试了几种读取响应自定义标头的方法,但未能做到。我知道我收到的响应由nginx提供,并且自定义标头名称以X -......

开头
$endpoint =  'url here';
$ch = curl_init( $endpoint );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'cbFunc');                                                                    


$result = curl_exec($ch);

print_r( curl_getinfo($ch ) );

1 个答案:

答案 0 :(得分:0)

PHP manual是出色的参考指南,当您遇到此类问题时,这是一个很好的起点。

  

CURLOPT_HEADERFUNCTION [将值设置为]接受五个参数的回调。

因此

log_headers('init');
$endpoint =  'url here';
$ch = curl_init( $endpoint );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'log_headers');                                                                   
$result = curl_exec($ch);
$headers=log_headers();
print_r($headers);

function log_headers($ch=false, $headers=false)
{
    static $hdrs;
    if (is_array($hrs) && $ch===$headers===false) {
        return $hdrs[];
    } elseif ($ch==='init') {
        $hdrs=array();
        return 0;
    } 
    $hdrs[]=$headers;
    return strlen($headers);
}