0

PHPのcurlには、リクエストを実行するときにHostヘッダーが含まれていないようです。

<?php
    $handle = curl_init('http://example.com/');
curl_setopt_array($handle, array(
    CURLOPT_USERAGENT => 'test ua',
    CURLOPT_REFERER => 'http://example.org/',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_PROXY => '127.0.0.1:8080',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,

    //Doesn't work if you specify it manually or leave it out:
    CURLOPT_HTTPHEADER => array(
        'Host: example.com'
    )
));

print_r(curl_getinfo($handle));
echo curl_exec($handle);
?>
4

3 に答える 3

0

これはまったく関係のないバグであり、ユーザーエージェント内に改行があることで発生しました。例:

curl_setopt_array($handle, array(
    CURLOPT_USERAGENT => "user-agent\n"
));
于 2012-06-28T21:04:25.320 に答える
0

リクエストURLを指定すると、HostヘッダーはPHPによってすでに自動的に作成されています。

次の例は十分な確認である必要があります。

<?php
$handle = curl_init('http://pgl.yoyo.org/http/browser-headers.php');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);

echo curl_exec($handle);
?>

出力HTMLには、期待どおりにリクエストヘッダーが一覧表示Host: pgl.yoyo.orgされます。

于 2012-06-28T20:38:50.560 に答える
0

ホストヘッダはcurl_init ()の引数で定義

于 2012-06-28T20:36:16.270 に答える