PHP header() 함수란 무엇인가?
header() 함수는 PHP에 미리 정의되어 있는 네이티브 함수입니다. 이 함수를 사용하면 웹 서버가 본격적인 출력(HTML 본문 등)을 전송하기 이전에 클라이언트, 즉 브라우저로 보내는 HTTP 헤더 정보를 직접 제어할 수 있습니다.
쉽게 말해, header() 함수는 서버가 클라이언트에게 반환하는 HTTP 응답(Response)의 헤더를 설정하는 역할을 합니다. 이를 활용하면 페이지 이동(리다이렉션), 콘텐츠 타입(Content-Type) 변경, 캐싱 제어 등 다양한 작업을 수행할 수 있습니다.
⚠️ 참고: header() 함수는 어떤 출력이라도 발생하기 전에 호출해야 합니다. 이미 HTML이나 공백이 출력된 후에 호출하면 "headers already sent" 오류가 발생합니다.
header() 함수의 주요 활용 방법
1. 페이지 리다이렉션 (Redirect)
header() 함수의 가장 대표적인 용도로, 사용자를 한 웹페이지에서 다른 웹페이지로 자동으로 이동시킬 때 사용합니다.
header('Location: https://www.example.com');2. Content-Type 설정
PHP는 기본적으로 Content-Type: text/html 형식으로 응답을 전송합니다. 만약 PDF 파일이나 JSON 데이터처럼 다른 형식으로 응답하고 싶다면 header() 함수로 Content-Type을 변경할 수 있습니다.
// PDF 파일 생성 시
header('Content-Type: application/pdf');
// JSON 형식으로 응답 반환 시
header('Content-Type: application/json');3. HTTP 상태 코드(Status Code) 설정
서버의 응답 상태를 명확히 전달해야 할 때 HTTP 상태 코드를 직접 지정할 수 있습니다. 예를 들어 요청한 페이지가 존재하지 않음을 알리는 404 상태 코드는 아래와 같이 설정합니다.
header("HTTP/1.0 404 Not Found");4. 브라우저 캐시 비활성화 (No Cache)
실시간 데이터를 다루는 페이지의 경우, 브라우저가 응답을 캐싱하지 않도록 강제해야 할 때가 있습니다. 아래 예제처럼 캐시 관련 헤더를 전송하면 브라우저의 기본 캐시 설정을 덮어써(no-cache) 항상 최신 데이터를 받아오게 됩니다.
header("Cache-Control: no-cache, must-revalidate");마무리
header() 함수는 PHP에서 HTTP 응답을 세밀하게 제어할 수 있는 필수 도구입니다. 리다이렉션, 콘텐츠 타입 지정, 상태 코드 설정, 캐시 제어까지 다양하게 활용되므로, 반드시 모든 출력 이전에 호출한다는 원칙만 기억하면 안정적으로 사용할 수 있습니다.