使用cURL访问文件时,它忽略了所述文件中的set头。当我在没有cURL的情况下通过浏览器直接访问同一文件时,其工作和标题设置正确。任何人都知道为什么会这样,以及我如何解决这个问题?
我正在编写API并且需要在Web服务中设置HTTP标头响应,而不是在用于通过cURL连接到文件的文件中。希望这是有道理的。
非常感谢提前。
答案 0 :(得分:1)
curl_setopt($ch, CURLOPT_HEADER, <true or false>);
可以帮到你。
或者如果想要准确地提供http标头,
curl_setopt($ch, CURLOPT_HTTPHEADER,array(<header parameters>));
将是一个解决方案。
答案 1 :(得分:1)
当您使用CURL时,请尝试将此作为您的使用者
curl_setopt($c_link, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
或
curl_setopt($c_link, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
你也可以从firefox复制标题,这可能看起来像这样
$header = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header = "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header = "Cache-Control: max-age=0";
$header = "Connection: keep-alive";
$header = "Keep-Alive: 300";
$header = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header = "Accept-Language: en-us,en;q=0.5";
$header = "Pragma: ";
答案 2 :(得分:0)
我会帮助你
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,"URL");
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch,CURLOPT_HTTPHEADER, array('newVar:newValue','Content-type: text/plain', 'Content-length: 100'));
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
ob_clean();
$result = curl_exec($ch);
echo $result;
curl_close($ch);