단일 PHP cURL 요청에서 응답 헤더 및 본문 검색
PHP의 cURL 라이브러리는 HTTP 요청을 수행하는 기능을 제공하므로 다양한 용도로 사용할 수 있습니다. 데이터 가져오기 및 통신 작업. 그러나 cURL을 사용할 때 직면하게 되는 일반적인 문제는 단일 요청에서 응답 헤더와 본문을 모두 검색해야 한다는 것입니다.
기본적으로 CURLOPT_HEADER를 true로 설정하면 응답에 결합된 헤더와 본문이 모두 반환되므로 추가 작업이 필요합니다. 개별 구성 요소를 추출하기 위해 구문 분석합니다. 보다 효율적이고 안전한 접근 방식을 위해 다음과 같은 대체 방법을 사용할 수 있습니다.
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); // Execute the request $response = curl_exec($ch); // Extract header and body $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size);
이 방법은 CURLINFO_HEADER_SIZE 정보를 사용하여 본문에서 헤더를 분리합니다. 이 접근 방식은 프록시 서버나 특정 유형의 리디렉션을 처리할 때 제한이 있을 수 있습니다. 이러한 경우 안정성을 높이려면 다음 솔루션을 사용하는 것이 좋습니다.
function get_headers_body($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); // Execute the request and get headers only $headers = curl_exec($ch); // Close the original handle curl_close($ch); // Set the necessary header information to a new handle $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); foreach (explode("\n", $headers) as $header) { // Remove set-cookie headers if (stripos($header, 'set-cookie') !== false) { continue; } // Add it to the request curl_setopt($ch, CURLOPT_HTTPHEADER, array($header)); } // Execute the request and get the body only $body = curl_exec($ch); // Close the handle curl_close($ch); return array( 'headers' => $headers, 'body' => $body ); }
이 솔루션은 헤더 검색 프로세스를 더 강력하게 제어하여 더욱 안정적인 결과를 보장합니다.
위 내용은 단일 PHP cURL 요청에서 응답 헤더와 본문을 모두 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!