如何在Zend_Http_Client中设置“REFERER”?

时间:2011-02-28 06:54:20

标签: php zend-framework curl referer zend-http-client

您好  我使用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);但我也在寻找更好的方法。 感谢。

1 个答案:

答案 0 :(得分: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());

这也和以前一样。