如果在没有 Content-Length 标头的情况下执行,我有一个 cURL 请求,它会给我一个 411 length required 错误。当我添加$header[] = 'Content-Length: 0
到我的标题数组时,它会缓慢执行(约 15 秒)。
我在不同的域上使用相同的代码没有任何问题。在此域上,我不需要设置 content-length 标头,也不会收到 411 错误。我认为 Content-Length 错误可能与该问题有关,因为只有 PUT 请求应该给我这个错误。
这是我当前的 cURL 请求:
$curl = curl_init();
$header[] = 'Authorization: Basic 123123';
$header[] = 'Accept: text/xml';
//$header[] = 'Content-Length: 0';
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
$error = curl_error($curl);
编辑:我已经更改CURLOPT_URL
并添加了CURLOPT_POSTFIELDS
.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
代替
curl_setopt($curl, CURLOPT_URL, $url . $data);
这样我就可以消除对Content-Length
标头的需求,但请求仍然非常慢。