헤더
header-field = field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)
- Host: www.google.com
- field-name : Host
- field-value : www.google.com
- field-name과 ":" 사이에는 공백이 들어가면 안됨
용도
- HTTP 전송에 필요한 모든 부가정보
- Content-Type: text/html;charset=UTF-8
- Content-Length: 3423
- 표준 헤더는 엄청 많음
- 헤더를 임의로 생성할 수 있으나, 클라이언트와 서버간에 약속이 필요함
참고. HTTP 헤더 - RFC2616(과거)
- 현재는 폐기됨(참고만 하자)
- General 헤더: 메시지 전체에 적용되는 정보
- Request 헤더: 요청 관련 정보(브라우저 정보 등)
- Response 헤더 : 응답 관련 정보(서버 종류 등)
- Entity 헤더 : 엔티티 바디 정보(메세지 바디에 담긴 엔티티 관련 정보)
- 메세지 본문에는 실제 엔티티 본문이 담김
- 엔티티 본문은 요청이나 응답 시에 전달할 실제 데이터
- 엔티티 헤더는 엔티티 본문을 해석할 수 있는 정보 제공
HTTP 헤더 - RFC723x
엔티티라는 단어 대신 표현을 사용
표현(Representation) = 표현 메타데이터(Metadata) + 표현 데이터(Data)

- 메세지 본문을 통해 표현 데이터 전달
- 페이로드 = 메세지 본문
- 표현 = 요청이나 응답에서 전달할 실제 데이터
- 표현 헤더 = 표현 데이터를 해석할 수 있는 정보 제공
표현
Content-Type : 표현 데이터의 형식
- text/html;charsert=UTF-8
- application/json 등 데이터의 종류
Content-Encoding : 표현데이터 압축 방식
- 데이터 전송측에서 압축 후 인코딩 헤더 추가
- 받는 쪽에서 인코딩 헤더를 확인 후 압축 해제
Content-Language : 표현 데이터 언어
Content-Length : 표현 데이터 길이
협상(Content Negotiation)
클라이언트가 선호하는 표현을 서버에 요청
- Accept : 클라이언트가 선호하는 미디어(콘텐츠) 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 방식
- Accept-Language : 클라이언트가 선호하는 언어
협상의 우선순위
- q(Quelity Value)를 사용
- 0~1 사이의 값으로 1에 가까울 수록 우선순위가 높음
- 생략하면 1
- ex) 선호 언어로 한국어(1순위)와 영어(2순위)를 요청했는데
서버의 기본 언어가 독일어(1순위)고 2순위가 영어라면?
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
- Accept-Language = 헤더의 필드 네임
- ko-KR = 생략 했으니 1
우선순위에 따라 영어 선택
- 구체적인 조건이 우선순위가 높음
- ex) Accept: text/,text/plain;format=flowed
1 순위 : text/
2 순위 : text/plain;format=flowed
- 구체적인 것을 기준으로 미디어 타입을 맞춘다.
전송 방식
1. 단순 전송
- 콘텐츠의 길이를 알고 있을 때 사용

2. 압축 전송
- 페이로드 메세지를 압축해서 전송

3. 분할 전송
- 페이로드를 쪼개서 하나씩 전송

4. 범위 전송
- 특정 범위만 전송

일반 정보
1. From
유저 에이전트의 이메일 정보
2. Referer
이전 웹 페이지 주소
- 유입 경로를 분석할 때 사용
- 요청에서 사용
- 예를 들어 www.google.com에서 www.naver.com으로 이동을 했다면
Referer = www.google.com
3. User-Agent
유저 에이전트 어플리케이션 정보
- 웹 브라우저 정보 등등
- 요청에서 사용
- 어떤 종류의 브라우저에서 에러가 발생하는지 파악 가능
4. Server
요청을 처리하는 서버의 소프트웨어 정보
- 응답에서 사용
- ex) Server: Apache/2.2.22 (Debian)
5. Date
메세지 발생 날짜와 시간
특별한 정보
1. HOST
요청에서 어떤 호스트(도메인)을 요청했는지에 대한 정보
- 하나의 서버에 여러 개의 도메인이 있을 때

2. Location
페이지 리디렉션
- 201 created에서는 생성된 리소스의 uri
- 3xx 에서는 리디렉션할 위치
3. Allow
허용 가능한 HTTP 메서드
- 405 (Method Not Allowed) 응답에 포함
- ex) Allow: GET
4. Retry-After
503 메세지에서 서비스가 언제까지 불능인지 알려줌
- Retry-After: Fri, 31 Dec 1999 23:59:59 GMT (날짜 표기)
- Retry-After: 120 (초단위 표기)
5. Authorization
클라이언트의 인증 정보를 서버에 전달
- ex) Authorization: Basic xxxxxxxxxxxxxxxx
6. WWW-Authenticate
인증 방법에 대한 설명
- 401 nauthorized에서 사용(응답)
- ex) WWW-Authenticate: Newauth realm="apps", type=1,
title="Login to \"apps\"", Basic realm="simple"
출처 : 링크텍스트