【问题标题】:The request has an invalid header name. HTTP Error 400.请求的标头名称无效。 HTTP 错误 400。
【发布时间】:2016-12-12 11:31:16
【问题描述】:

这是我的 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。请求的标头名称无效。

你知道我为什么会收到这个错误吗?我应该如何解决它?

【问题讨论】:

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


【解决方案1】:

我认为你应该使用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');

OR没玩过

$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";

【讨论】:

    【解决方案2】:

    要考虑的另一点是空格。

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

    用错了

    “...代理:Mozilla..”

    这会送你

    错误请求 - 无效标头

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2022-11-11
      • 2019-05-10
      • 2014-12-11
      • 2019-11-30
      • 2014-01-22
      • 1970-01-01
      相关资源
      最近更新 更多