3.2.3. 헤더

전 절에서는 요청과 응답의 첫 번째 줄(메서드, 상태 코드, 사유 구절, 버전 번호)에 초점을 맞췄다.
시작줄 다음에는 0개, 1개 혹은 여러 개의 HTTP 헤더가 온다.

(a) 요청 메시지                                      (b) 응답 메시지

GET /test/hi-there.txt HTTP/1.1     (시작줄)       HTTP/1.0 200 OK
Accept: text/*                      (헤더)        Content-Type: text/plain
Host: www.joes-hardware.com                      Content-Length: 19
                                    (본문)        Hi! I'm a message.

HTTP 헤더 필드는 요청과 응답 메시지에 추가 정보를 더한다.
그들은 기본적으로 이름/값 쌍으 ㅣ목록이다.
예를 들어, 다음의 헤더줄은 Content-Length 헤더 필드에 19라는 값ㄷ을 할당한다.

Content-Length: 19

3.2.3.1 헤더 분류

HTTP 헤더 명세는 여러 헤더 필드를 정의한다.
애플리케이션은 또한 자유롭게 자신만의 헤더를 만들어낼 수 있다.
HTTP 헤더는 다음과 같이 분류된다.

3.2.3.1.1 일반 헤더

요청과 응답 양쪽에 모두 나타날 수 있음

3.2.3.1.2 요청 헤더

요청에 대한 부가 정보를 제공

3.2.3.1.3 응답 헤더

응답에 대한 부가 정보를 제공

3.2.3.1.4 Entity 헤더

본문 크기와 콘텐츠, 혹은 리소스 그 자체를 서술

3.2.3.1.5 확장 헤더

명세에 정의되지 않은 새로운 헤더

각 HTTP 헤더는 간단한 문법을 가진다.
이름, 쉼표, 공백(없어도 된다), 필드 값, CRLF(Carriage Return, Line Feed)가 순서대로 온다.
다음 표는 몇 가지 흔히 쓰이는 헤더의 예를 나열하고 있다.

헤더의 예설명
Date: Tue, 3 Oct 1997 02:16:03 GMT서버가 응답을 만들어낸 시각
Content-length: 1504015,040 바이트의 데이터를 포함한 엔터티 본문
Content-type: image/gif엔터티 본문은 GIF 이미지다.
Accept: image/gif, image/jpeg, text/html클라이언트는 GIF, JPEG 이미지와 html을 받아들일 수 있다.

3.2.3.2 헤더를 여러 줄로 나누기

긴 헤더 줄은 그들을 여러 줄로 쪼개서 더 읽기 좋게 만들 수 있는데, 추가 줄 앞에는 최소 하나의 스페이스 혹은 탭 문자가 와야 한다.

HTTP/1.0 200 OK
Content-type: image/gif
Content-length: 8572
Server: Test Server
    Version: 1.0

이 예에서, 응답 메시지는 여러 줄로 값이 쪼개진 Server 헤더를 포함하고 있다.
그 헤더의 완전한 값은 'Test Server Version 1.0'이다.
우리는 모든 HTTP 헤더를 뒷부분에서 간략히 설명할 것이다.
또한 모든 헤더에 대한 더 자세한 요약을 뒤에서 제공한다.