[HTTP] HTTP 헤더 - 전송 방식과 일반 정보 헤더
대부분의 내용은 인프런 김영한 강사님의 모든 개발자를 위한 HTTP 웹 기본 지식을 참고했습니다.
HTTP 전송 방식
HTTP 헤더에서 설정하는 전송방식으로는 크게 아래의 4가지 방식이 있습니다.
- 단순 전송
- 압축 전송
- 분할 전송
- 범위 전송
단순 전송
단순 전송은 보내려는 데이터의 길이를 알고 있을 때 사용합니다.
한 번에 요청하고 서버에서는 한 번에 요청을 받습니다.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
압축 전송
데이터를 압축해서 전송합니다.
이 경우에는 Content-Encoding 속성으로 어떻게 압축되어 있는지를 알립니다.
그리고 여기서 Content-Length는 압축된 데이터의 크기를 말합니다.
(Content-Length로 압축된 크기를 알려줘야 메세지 전송의 끝을 알 수 있습니다.)
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 521
lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkl
분할 전송
chunk라는 작은 덩어리로 데이터를 보냅니다.
이 경우에는 Transfer-Encoding 속성을 사용해 명시합니다.
이 경우에는 어떤 데이터를 보낼지 모르기 때문에 Content-Encoding 속성을 사용할 수 없습니다.
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
5
Hello
5
World
0
\r\n
5byte의 Hello를 서버에서 보내고,
5byte의 World를 서버에서 보냅니다.
그리고 마지막으로 전송이 끝났다는 것을 보냅니다.
범위 전송
Content-Range로 범위를 지정해서 요청하는 방식입니다.

일반 정보 헤더
일반 정보 헤더는 모든 종류의 HTTP 메시지에 대한 일반적인 속성을 나타내는 헤더입니다.
From
HTTP 요청에서 사용되며 클라이언트가 요청을 보낼 때 클라이언트의 이메일 주소를 나타냅니다.
Referer
요청된 웹페이지의 이전 주소를 나타냅니다.
Referer는 웹브라우저가 요청을 보낼 때 자동으로 생성됩니다.
해당 필드로 유입경로 분석등이 가능합니다.
User-Agent
클라이언트 애플리케이션의 정보를 나타냅니다.
해당 필드를 통해 어떤 브라우저에서 장애가 발생했는지 확인이 가능합니다.
예시는 아래와 같습니다.
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Server
응답 헤더의 한 필드로 ORIGIN 서버가 사용하는 소프트웨어와 그 버전을 식별하는 데 사용됩니다.
HTTP 요청을 보내면 중간 중간 많은 프록시 서버를 거치게 되는데 그런 서버를 제외하고 진짜 요청이 있는 서버를 말합니다.
Server: Apache/2.4.41 (Unix) OpenSSL/1.1.1g PHP/7.3.11
Date
메세지가 발생한 날짜와 시간을 나타냅니다.
Date: Tue, 11 Jan 2022 08:00:00 GMT
Host
요청 헤더의 필드 중 하나로 클라이언트가 리소스가 호스팅 되는 서버의 호스트 이름을 나타냅니다.
Host 헤더의 주요 목적은 클라이언트가 여러 도메인이 하나의 서버에 호스팅 되는 가상 호스트 환경에서 요청을 올바른 서버로 라우팅 하기 위해서 사용됩니다.

Host 필드가 없다면 200.200.200.2 라는 IP로 요청을 보냈을 때 해당 서버에서 aaa.com, bbb.com, ccc.com이라는 도메인을 모두 호스팅 하고 있을 경우 어떤 도메인으로 요청을 매핑해야 하는지 알 수 없습니다.

그래서 Host 필드에 어떤 도메인으로 보내는 요청인지 명시를 해주어야 합니다.
Location
Location은 응답 헤더중 하나입니다.
Location헤더는 주로 상태코드가 3xx와 함께 사용됩니다.
요청을 처리한 후 요청한 리소스가 영구적으로 이동되거나 임시적으로 다른 위치로 이동된 경우 리다이렉션 해야 하는 경우
Location 헤더에 리다이렉션 돼야 하는 위치를 보냅니다.
Location: https://www.example.com/new-location
Allow
Allow는 응답 헤더 중 하나로 클라이언트에게 어떤 HTTP 메소드가 허용 가능한지 알려줍니다.
Allow: GET, HEAD, OPTIONS
Retry-After
Retry-After는 응답 헤더 중 하나로 클라이언트가 특정 리소스에 대해 추가 요청을 하기까지 기다려야 하는 시간을 나타냅니다.
주로 503 상태 코드와 함께 사용되는데, 서버가 일시적으로 부하가 많거나 유지 보수 작업중일 때 클라이언트에게 알려주기 위함입니다.