如果没有Content-Length标头执行,我有一个cURL请求给出了411长度所需的错误。当我将$header[] = 'Content-Length: 0
添加到我的标头数组时,它会缓慢执行(约15秒)。
我在不同的域上使用相同的代码而没有任何问题。在这个域上,我不需要设置内容长度标题,我没有收到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
标头的需求,但请求仍然非常慢。
答案 0 :(得分:0)
有些服务器要求您设置内容长度,有些则不需要。这主要用于它可以基于它的缓冲区。
您不应将0添加为内容长度,而应添加将要发送的数据量。如果将其设置为0,则某些服务器将拒绝加载它。
我猜测正在发生的是因为你将它设置为0,它会读取内容字节/字节,这显然非常慢。