加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP卷曲使用Proxy时如何检索标头. CURLOPT_HEADERFUNCTION?

发布时间:2020-12-13 15:58:01 所属栏目:PHP教程 来源: $curl = curl_init(); curl_se
导读:我正在使用这样的代理连接到网站: $curl = curl_init();curl_setopt($curl,CURLOPT_PROXY,$proxy);curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$data);curl_setopt($curl,CURLOPT_RETUR
我正在使用这样的代理连接到网站:

$curl = curl_init();
curl_setopt($curl,CURLOPT_PROXY,$proxy);
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_POST,1); 
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);  
curl_setopt($curl,CURLOPT_HEADER,TRUE);
$result = curl_exec ($curl);

问题是CURLOPT_HEADER正在从代理连接返回标头,而我需要从实际请求到URL的标头.我相信解决方案涉及使用CURLOPT_HEADERFUNCTION但我不明白如何使用它.

我试过这个(取自其他地方的SO):

curl_setopt($curl,CURLOPT_HEADERFUNCTION,"HandleHeaderLine");

使用功能:

function HandleHeaderLine($curl,$header_line ) {
    echo "<br>YEAH: ".$header_line; // or do whatever
    return strlen($header_line);
}

但似乎我只能返回字节数.我不确定如何获得实际价值.在我的情况下,我只想要位置标题.

谢谢.

解决方法

CURLOPT_HEADERFUNCTION的匿名回调将需要访问您要在其中存储标头信息的变量.有几种不同的方法,但这里有一些例子:

使用方法:

$headers = [];
...
function HandleHeaderLine($curl,$header_line) use (&$headers)
{
    ...
    if ($isHeaderIWant) {
        $header[] = 'some info';
    }
    return strlen($header_line);
}

使用类属性:

private $headers = [];
...
function HandleHeaderLine($curl,$header_line)
{
    ...
    if ($isHeaderIWant) {
        $this->header[] = 'some info';
    }
    return strlen($header_line);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读