Content-Length 헤더없이 실행하는 경우 411 길이의 오류가 발생하는 cURL 요청이 있습니다. 내 머리글 배열에 $header[] = 'Content-Length: 0
을 추가하면 천천히 (~ 15 초) 실행됩니다.POST cURL 요청으로 실행 속도가 느림
같은 코드를 다른 도메인에서 아무 문제없이 사용합니다. 이 도메인에서는 콘텐츠 길이 헤더를 설정할 필요가 없으며 411 오류가 표시되지 않습니다. 나는 PUT 요청이 나에게이 오류를 제공해야하기 때문에 Content-Length 오류가 이슈와 관련이 있다고 생각한다.
이 내 현재의 컬을 요청입니다 :
$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 . $data);
나는 Content-Length
헤더에 대한 필요성을 제거 할 수 있었지만 요청이 여전히 몹시 느린이 방법의
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
.
모든 제정신 서버는 보내는 모든 본문을 무시할 것이며'Content-Length : 0' 헤더를 사용하여 유효하지 않은 HTTP 요청을 보내기 위해 헤더를 읽은 직후에 즉시 연결을 끊습니다. 'Content-Length : 0'은 당신이 헤더 뒤에 메시지를 보내는 것을 끝냈다는 것을 서버에 알려줍니다. 가장 좋은 추측은 서버 **가 더 이상 올 수 없다고 말할 때 당신을 믿는다는 것입니다. ** 이후에 조작 된 헤더 (귀하의 엔티티 본문)를 보내면 마약 중독자가 발생합니다. 프로토콜을 따르지 않으면 HTTP를 수행 할 수 없습니다. – rdlowrey
이 문제는 해결되었습니다. 이 요청에는 Content-Length 헤더가 필요하지 않습니다. TTL이 너무 낮은 API 서버에서 문제가 발생했습니다. 우리는 호스트 파일에서이 파일을 고쳤으며 요청에 이제는 정기적 인 실행 속도가 있습니다. – oliboon