[英]PHP Curl don't set headers
我有以下脚本:
$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_URL, 'http://4pda.ru/forum/index.php?act=idx');
curl_setopt($curl, CURLOPT_HEADER, true);
$headers = array();
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
$headers[] = 'Accept-Encoding: gzip, deflate';
$headers[] = 'Host: 4pda.ru';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$cookie_path = "./cookies.txt";
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_path);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_path);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
$result = curl_exec($curl);
var_dump(curl_getinfo($curl,CURLINFO_HEADER_OUT)); //problem one
curl_close($curl);
var_dump($result);
我有两个问题。 首先,PHP Curl不设置标头。 它只发送以下标题:
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
Host: 4pda.ru
Accept: */*
你可以看到php设置标头错误。 第二个问题是服务器返回以下内容:
HTTP/1.1 403 Forbidden
Server: nginx
Date: Wed, 26 Jun 2013 14:26:18 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Keep-Alive: timeout=20
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
虽然,我希望得到一个页面的HTML。
令人惊讶的是,此脚本在我的主服务器(Windows)和我以前的服务器上运行良好。 我认为我的问题是由于错误配置新服务器造成的。 但我可能是错的。
我很乐意接受任何建议。 此致,丹尼斯。
更新。 谢谢马川,第一个问题就解决了。
你没有在该集合标题行中使用错误的变量名吗?
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
应该读
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.