6

以下代码:

$ch = curl_init('http://localhost/testweb/search.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Encoding    gzip, deflate',
        'Accept-Language    en-US,en;q=0.5',
        'Connection keep-alive',
        'SomeBull   BeingIgnored',
        'Cookie CLASSICPAGE=off',
        'User-Agent Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0'
        ));
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$body = substr($response, -$info['download_content_length']);
echo $body;

具有以下输出(php.exe mycurl.php):

Host: localhost
Accept: */*
User-Agent      Mozilla/5.0 (Windows NT 5.1; rv: 16.0) Gecko/20100101 Firefox/16.0

本地主机上的 search.php:

error_reporting(0);
header("Content-Type: text/plain");
foreach (getallheaders() as $name => $value) {
    echo "$name: $value\n";
}

我的问题是:我设置的标题发生了什么?

4

1 回答 1

22

标头格式为:

Header: value

您的示例缺少每个标题上的冒号。只需像这样调整它:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: en-US,en;q=0.5',
    'Connection: keep-alive',
    'SomeBull: BeingIgnored',
    'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0'
  )
);
于 2012-10-21T04:30:44.703 回答