HTTP 헤더와 바디 구분하기 - CURL 사용
간혹 HTTP 프로토콜의 헤더와 바디를 구분해야 되는 경우가 있습니다.
헤더의 어떤 정보를 보고 싶기 때문 입니다.
크롬계열에서 디버그 모드에서 볼 수 있지만 음... 왜? 쓸데 없이 소문자로 나오는지 있는 그대로 보여주지 ..
간혹 소문자 그대로 사용하면 문제가 되는 웹서버가 있습니다. 첫글자는 무조건 대문자. 띄어 쓰기도 잘 해야 합니다.
정상적인 웹브라우저 아니라고 판단하고 차단 하는 방화벽도 있더군요.
헤더를 보려면 반드시 아래처럼 해야 합니다.
curl_setopt($ch, CURLOPT_HEADER, 1); // 리스폰 헤더를 보려고 할 때.
...
...
$response = curl_exec($ch);
$aHeadInfo = curl_getinfo($ch);
curl_close($ch);
아래처럼 위에서 얻은 정보로 분할해 주면 됩니다.
$result_data = '';
$aRespHeader = array();
if (isset($aHeadInfo["header_size"]))
{
$http_header = substr($response, 0, $aHeadInfo["header_size"]);
$http_body = substr($response, $aHeadInfo["header_size"]);
$result_data = $http_body;
}
위처럼 헤더와 바디를 구분하고 헤더에서 필요한 location이나 날짜등 그리고 쿠키라든지 별도 필요한 것을 얻어 적절하게 처리할 수 있습니다.
* 참고
HTTP HEADER PARSE(헤더 파서) 간단한 프로그램 > PHP