1

您好我正在使用 Zend_Http_Client 和适配器 Zend_Http_Client_Adapter_Curl ,我尝试使用设置 REFERER

  $client = new Zend_Http_Client('http://www.example.com',array('adapter'=>'Zend_Http_Client_Adapter_Curl');
        $client->getAdapter()->setCurlOption('CURLOPT_REFERER','http://www.google.com');
$client->request('POST');
echo $client->getLastRequest();

在我的请求中,我看到除了 REFERER 标头之外的所有类型的标头都已设置?可以使用 $client->setHeaders('Referer',$url); 也,但我正在寻找更好的方法。谢谢。

4

1 回答 1

6

您的代码的有趣之处在于我只是尝试运行它并出现错误。所以我无法测试它。为此,我尝试了另一种方法:

    $adapter = new Zend_Http_Client_Adapter_Curl();
    $adapter->setCurlOption(CURLOPT_REFERER, 'http://www.google.com');

    $client = new Zend_Http_Client('http://www.example.com');      
    $client->setAdapter($adapter);            

    $client->request('POST');
    var_dump($client->getLastRequest());

上面的代码导致:

string 'GET /domains/example/ HTTP/1.1    
Accept: */*    
Referer: http://www.google.com     <-- THE REFERER
Host: www.iana.org    
Connection: close    
Accept-encoding: gzip, deflate    
User-Agent: Zend_Http_Client


' (length=180)

因此,在这种情况下,Referer 标头似乎设置正确。

编辑:根据 OP 的要求,我还测试了:

    $adapter = new Zend_Http_Client_Adapter_Curl();

    $client = new Zend_Http_Client('http://www.example.com');
    $client->setAdapter($adapter);

    $client->getAdapter()->setCurlOption(CURLOPT_REFERER, 'http://www.google.com');

    // This line below results in error:  
    // $client->getAdapter()->setCurlOption('referer', 'http://www.google.com');

    $client->request('POST');
    var_dump($client->getLastRequest());

这也像以前一样工作。

于 2011-02-28T10:36:36.460 回答