如何通过PHP发送和接收标头

时间:2010-10-30 01:07:16

标签: php http header http-headers

我想研究如何发送和接收标头。

我知道PHP的header函数,并认为我只能查看实际的请求标头(例如使用Firebug)并向服务器发出相同的请求(包括欺骗用户代理)。这是对的吗?

另一个问题是我如何获得标题响应?我想分析一下回应。

感谢。

修改

@Tatu,这是我运行的代码:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0');

$result = curl_exec($ch);
curl_close($ch);

header('Content-type: text/plain');
echo($result);

2 个答案:

答案 0 :(得分:3)

您可能需要查看cURL,它允许您发出请求并设置和检查标头。 PHP header仅设置当前页面的标题,您不能使用它来欺骗您的用户代理 - 这些是服务器设置的标题,因此没有这样的意义。

带有自定义标头的cURL请求的基本结构可能是这样的:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Your user agent");

$result = curl_exec($ch);
curl_close($ch);

$result的开头现在将包含从服务器收到的标头。

答案 1 :(得分:1)

如果你想自己发送标题而不使用cURL,请查看PHP中的套接字。

http://php.net/sockets