Я подозреваю, что ваше соединение находится за перехваченным прокси-сервером в стиле MITM, который отправляет неправильные заголовки Content-Length, но в любом случае вы можете указать curl игнорировать Content-Length с параметром CURLOPT_IGNORE_CONTENT_LENGTH
- к сожалению, PHP не имеет константы дляCURLOPT_IGNORE_CONTENT_LENGTH, но его магическое число равно 136, что означает, что вы можете просто набрать
if(!defined("CURLOPT_IGNORE_CONTENT_LENGTH")){
define("CURLOPT_IGNORE_CONTENT_LENGTH",136);
}
$response = $client->request(
'get',
'https://www.google.com',
['headers' => $headers, 'curl'=>[CURLOPT_IGNORE_CONTENT_LENGTH=>true]]
);
(обратите внимание, что это может привести к значительному снижению производительности, так как теперь curl должен продолжать чтение из сокета, пока сервер не закроет егоВместо чтения до тех пор, пока не будут получены байты Content-Length, в зависимости от конфигурации сервера, что может быть ОЧЕНЬ медленнее, многие серверы оставляют соединения открытыми для схемы повторного использования сокетов. Возможно, вы захотите добавить заголовок http Connection: close
, в то время какВы должны игнорировать заголовки длины содержимого.)