Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 브라우저로부터 받은 HTTP 헤더를 표시하는 방법

웹 애플리케이션을 개발하다 보면 디버깅이나 분석을 위해 브라우저(클라이언트)가 서버로 전송한 HTTP 요청 헤더를 직접 확인해야 하는 경우가 자주 있습니다. PHP에서는 이러한 헤더 정보를 간단하게 출력할 수 있는 몇 가지 방법이 있습니다.

방법 1: $_SERVER 슈퍼 글로벌 변수 활용

PHP는 요청 관련 정보를 $_SERVER 배열에 저장합니다. 아래 코드를 사용하면 서버가 받은 요청 정보를 확인할 수 있습니다.

<?php
print_r($_SERVER);
?>

이 배열에는 $_SERVER['REQUEST_METHOD'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_ACCEPT']처럼 HTTP_로 시작하는 키들에 클라이언트 헤더 정보가 담겨 있습니다.

방법 2: getallheaders() 함수 사용 (권장)

요청 헤더만 깔끔하게 모두 가져오려면 getallheaders() 함수를 사용하는 것이 가장 편리합니다. 이 함수는 모든 요청 헤더를 연관 배열 형태로 반환합니다.

예제 코드

$headers = getallheaders();
foreach($headers as $key => $val){
    echo $key . ': ' . $val . '<br>';
}

출력 결과

위 코드를 실행하면 다음과 같은 형태로 헤더 목록이 화면에 표시됩니다.

Host: www.websitename.com
Content-Length: 180
Cache-Control: max-age=0
Origin: https://www.websitename.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: https://www.writephponline.com/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cookie: _ga=GA1.2.118418268.1575911248; _gid=GA1.2.1794052867.1576852059

참고 사항

  • getallheaders()apache_request_headers()의 별칭(alias)으로, Apache 환경에서 주로 사용됩니다.
  • Nginx나 FastCGI 같은 일부 환경에서는 이 함수가 지원되지 않을 수 있으므로, 그 경우 위의 $_SERVER 배열에서 HTTP_ 접두사가 붙은 항목들을 순회하는 방식으로 대체할 수 있습니다.
  • 헤더 값은 클라이언트가 조작할 수 있으므로, 출력값을 신뢰하기 전에 반드시 검증·정제(sanitization) 과정을 거치는 것이 안전합니다.