HTTP 통신에서 **헤더(Header)**는 요청(request)과 응답(response) 메시지에 포함되어, 클라이언트와 서버 간의 정보를 전달하는 중요한 역할을 합니다.
이번 글에서는 요청과 응답 시 자주 사용되는 대표적인 HTTP 헤더들을 살펴보겠습니다.
1. 요청(Request) 시 주로 사용되는 헤더
1️⃣ Host
Host 헤더는 **요청을 보낼 대상 서버(호스트)**를 명시합니다.
도메인 이름과 함께 포트 번호가 포함될 수도 있습니다.
예를 들어, 아래의 HTTP 요청 메시지는 info.cern.ch 서버에 /hypertext/WWW/TheProject.html 리소스를 요청하는 예시입니다.
GET /hypertext/WWW/TheProject.html HTTP/1.1
Host: info.cern.ch
2️⃣ User-Agent
User-Agent 헤더는 요청을 보낸 클라이언트 프로그램의 정보를 담습니다.
웹 브라우저, 운영체제, 렌더링 엔진, 브라우저 버전 등의 세부 정보가 포함되어 있으며, 서버는 이를 바탕으로 적절한 응답을 제공 할 수 있습니다.
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0
3️⃣ Referer
Referer 헤더는 이전 페이지의 URL을 나타냅니다.
즉, 사용자가 어떤 경로를 통해 현재 요청으로 이동했는지를 서버가 알 수 있게 해주는 역할을 합니다.
Referer: https://en.wikipedia.org/
참고로, 원래 영어 철자는 Referrer가 맞지만, 초기 HTTP 개발 시 오타로 인해 Referer가 표준으로 자리 잡았습니다.
4️⃣ Authorization
Authorization 헤더는 클라이언트의 인증 정보를 서버로 전달할 때 사용됩니다.
인증 방식(type)과 자격 증명(credentials)이 함께 명시됩니다.
Authorization: <type> <credentials>
인증 방식에 따라 예시는 다음과 같이 달라질 수 있습니다.
- Basic 인증: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
- Bearer 토큰 인증: Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
2. 응답(Response) 시 주로 사용되는 헤더
1️⃣ Server
Server 헤더는 요청을 처리한 서버 소프트웨어의 정보를 명시합니다.
운영체제나 웹 서버 종류(Apache, Nginx 등)가 표시되기도 합니다.
Server: Apache/2.4.1 (Unix)
2️⃣ Allow
Allow 헤더는 클라이언트에게 허용된 HTTP 메서드 목록을 알려주는 역할을 합니다.
특히 405 Method Not Allowed 상태 코드와 함께 사용됩니다.
Allow: POST, OPTIONS
즉, 현재 요청된 메서드는 허용되지 않지만, POST나 OPTIONS는 사용할 수 있음을 의미합니다.
3️⃣ Retry-After
Retry-After 헤더는 서버가 일시적으로 요청을 처리할 수 없을 때, 재시도 가능한 시점을 알려줍니다.
보통 503 Service Unavailable 응답과 함께 사용됩니다.
Retry-After: Fri, 23 Aug 2024 09:00:00 GMT
Retry-After: 120
위의 예시는 ‘2024년 8월 23일 오전 9시 이후’ 혹은 ‘120초 후’에 다시 요청하라는 의미입니다.
4️⃣ Location
Location 헤더는 **리다이렉션 또는 새로 생성된 리소스의 위치(URL)**를 알려줍니다.
주로 3xx 리다이렉션 또는 201 Created 응답에서 함께 사용됩니다.
Location: https://example.com/new-page
5️⃣ www-Authenticate
WWW-Authenticate 헤더는 인증이 필요한 자원에 접근하려 할 때, 인증 방식을 서버가 명시하는 데 사용됩니다.
401 Unauthorized 상태 코드와 함께 전달됩니다.
WWW-Authenticate: Basic
3. 요청과 응답 모두에서 사용되는 헤더
1️⃣ Date
Date 헤더는 메시지가 생성된 날짜와 시간을 명시합니다.
요청 또는 응답 모두에서 사용될 수 있으며, 서버의 시각 기준으로 표현됩니다.
Date: Tue, 15 Nov 1994 08:12:31 GMT
2️⃣ Connection
Connection 헤더는 클라이언트와 서버 간의 연결 방식을 제어합니다.
대표적인 값은 다음 두 가지입니다.
- keep-alive: 지속적인 연결 유지
- close: 응답 후 연결 종료
Connection: keep-alive
Connection: close
정리하면
| 구분 | 대표 헤더 | 설명 |
| 요청(Request) | Host, User-Agent, Refer, Authorization | 클라이언트와 요청 정보 전달 |
| 응답(Response) | Sever, Allow, Retry-After, Location, WWW-Authenticate | 서버 상태 및 접근 정보 제공 |
| 공통(Common) | Date, Connection | 메시지 생성 시간 및 연결 방식 제어 |
이처럼 HTTP 헤더는 단순히 요청과 응답을 전달하는 수준을 넘어,
통신의 맥락(Context)과 정책을 정의하는 중요한 요소로 작동합니다.
'컴퓨터 과학 > 네트워크' 카테고리의 다른 글
| HTTP 기반 기술: 쿠키(Cookie) (0) | 2025.10.05 |
|---|---|
| HTTP 기반 기술: 캐시(Cache) (0) | 2025.10.05 |
| HTTP 상태 코드 완벽 정리 (0) | 2025.10.05 |
| HTTP 메서드란? (0) | 2025.10.05 |
| HTTP 메시지 구조 이해하기 (0) | 2025.10.05 |