请求具有无效的标头名称。 HTTP错误400。

时间:2016-08-06 00:58:07

标签: php servlets curl http-headers http-status-code-404

这是我的curl请求(在一些旧的stackoverflow答案中找到它):

$headers[]  = "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0";
$headers[]  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$headers[]  = "Accept-Language:en-us,en;q=0.5";
$headers[]  = "Accept-Encoding:gzip,deflate";
$headers[]  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$headers[]  = "Keep-Alive:115";
$headers[]  = "Connection:keep-alive";
$headers[]  = "Cache-Control:max-age=0";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($curl);
curl_close($curl);

return $data;

我收到了这个错误:

  

错误请求 - 标头无效

     

HTTP错误400.请求的标头名称无效。

您是否有任何想法我为什么会收到此错误?我该如何解决?

2 个答案:

答案 0 :(得分:0)

我认为您应该CURLOPT_USERAGENT使用User-Agent我推荐的方式

curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0');

未使用

$headers[]  = "User-Agent:Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0";

而不是

$headers[]  = "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0";

答案 1 :(得分:0)

要考虑的另一点是空格。

User-Agent:Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0

使用错误

  

“ ...代理商:Mozilla ..”

这将向您发送

  

错误请求-无效标题

     

HTTP错误400。请求的标头名称无效。