가능세계
[Network] HTTP 헤더 살펴보기 - 요청 헤더와 응답 헤더 본문
HTTP 헤더는 클라이언트와 서버가 HTTP 요청-응답 프로세스 중에 정보를 교환하는 수단입니다.
전송에 필요한 모든 부가적인 정보를 전달할 수 있도록 해줍니다.
이번 포스팅에서는 요청 헤더와 응답 헤더에 대해 알아봅시다.
1. 요청 헤더(Request Header)
요청 헤더는 서버가 적절한 응답을 제공할 수 있도록 요청에 대한 정보가 포함된 HTTP 헤더입니다.
가져올 리소스에 대한 정보이거나, 리소스를 요청하는 클라이언트에 대한 정보일 수 있습니다.
1-1. 요청 헤더의 종류
다음은 요청 헤더의 몇 가지 예시입니다.
Host
: 요청한 호스트 정보(도메인)From
: 유저 에이전트의 이메일 정보Referer
: 이전 웹 페이지 주소User-Agent
: 유저 에이전트 애플리케이션 정보
1-2. Host: 요청한 호스트 정보 (도메인)
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
Host는 요청한 호스트 정보로, 요청에서 사용하는 필수 값입니다.
하나의 서버가 여러 도메인을 처리해야 할 때, 하나의 IP 주소에 여러 도메인이 적용되어 있을 때 Host 헤더를 통해 도메인을 식별할 수 있습니다.
포트가 포함되지 않으면 HTTP 연결은 80, HTTPS 연결은 443으로 간주됩니다.
1-3. From: 유저 에이전트의 이메일 정보
From 요청 헤더는 유저 에이전트의 이메일 주소를 지정하므로, HTTP 요청에 문제가 있는 경우 연락하는 데 사용할 수 있습니다.
주로 검색 엔진 담당자에게 크롤링 거절 메일을 보내는 경우 사용합니다. 그러나 그 외에는 잘 사용되는 편은 아닙니다.
1-4. Referer: 현재 요청된 페이지의 이전 웹 페이지 정보
Referer 요청 헤더는 현재 요청된 페이지의 이전 웹 페이지 정보를 나타냅니다.
클라이언트가 어디에서 방문하는지 서버에 알리는 URL이 포함되어 있으며, 사용자 유입 정보(경로)를 알아내기 위해 요청에서 사용됩니다.
예를 들어 A에서 B로 이동하는 경우 B를 요청할 때 Referer: A
를 포함해서 요청합니다.
1-5. User-Agent: 유저 에이전트 어플케이션 정보
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/ 537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
User-Agent 요청 헤더는 웹 브라우저 또는 클라이언트 애플리케이션 정보로, 요청에서 사용합니다.
클라이언트가 어떤 브라우저와 운영 체제를 사용하고 있는지 서버에게 알리기 위해 사용되며, 서버에서 디버깅을 하거나, 통계 정보 파악에 유용하게 쓰일 수 있습니다.
2. 응답 헤더(Response Header)
2-1. 응답 헤더의 종류
다음은 응답 헤더의 몇 가지 예시입니다.
Server
: 요청을 처리하는 오리진 서버의 소프트웨어 정보Date
: 메시지가 생성된 날짜Allow
: 허용 가능한 HTTP 메서드Retry-After
: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간Location
: 페이지 리다이렉션
2-2. Server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
Server: Apache/2.2.22 (Debian)
Server: nginx
Server 응답 헤더는 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보를 나타냅니다.
여기서 오리진 서버란, 중간에 거치는 프록시 서버가 아닌 실제 요청을 직접적으로 처리하는 서버를 의미하며, 이 서버는 실제 애플리케이션에서 표현 데이터를 만들어줍니다.
2-3. Date: 메시지가 발생한 날짜와 시간
Date: Tue, 15 Nov 1994 08:12:31 GMT
Date는 메시지가 발생한 날짜와 시간을 나타내며, 응답에서만 사용됩니다.
2-4. Allow: 허용 가능한 HTTP 메서드
Allow: GET, HEAD, PUT
Allow 응답 헤더는 특정 리소스에 대해 지원되는 메서드를 나타냅니다. 405
(Method Not Allowed) 응답에 포함해야 합니다.
다만 서버에서 자주 구현되진 않습니다.
2-5. Retry-After: 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT (날짜 표기)
Retry-After: 120 (초단위 표기)
Retry-After는 클라이언트에게 후속 HTTP 요청을 하기 전에 예상되는 대기 시간을 알려줍니다.
503
(Service Unavailable) 응답에서 서비스가 언제까지 불능인지 알려줄 수 있습니다.
2-6. Location: 페이지 리다이렉션
Loaction 응답 헤더는 페이지 리다이렉션이 발생할 때 대상 URL을 지정하는 데 사용됩니다.
웹 브라우저는 3xx
응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동합니다.
참고로, 201(Created) Location 값은 요청에 의해 생성된 리소스 URI이고, 3xx (Redirection) Location 값은 요청을 자동으로 리다이렉션하기 위한 대상 리소스를 가리킵니다.
참고
'Blog > Network' 카테고리의 다른 글
[Network] HTTP 헤더 살펴보기 - 콘텐츠 협상(Contents Negotiation) (0) | 2023.09.11 |
---|---|
[Network] HTTP 헤더 살펴보기 - HTTP 메시지 전송 방식 (0) | 2023.09.11 |
[Network] HTTP 헤더 살펴보기 - 표현 헤더(Representation Header) (2) | 2023.09.11 |
[Network] HTTP 상태 코드(HTTP Status Code) 정리하기 (0) | 2023.09.11 |
[Network] HTTP 메서드 속성 - 안전성, 멱등성, 캐시 가능성 정리하기 (0) | 2023.09.11 |