HTTP 헤더
header-field
field-name
":" OWS field-value
OWS (OWS:띄어쓰기 허용)- HTTP 전송에 필요한 모든 부가 정보
표현
Representation
= representation Metadata
+ Representation Data
- 헤더 : 전송, 응답 둘다 사용
- Content-Type
- 표현 데이터의 형식
- e.g.)
text/html;charset=utf-8
,application/json
,image/png
- Content-Encoding
- 표현 데이터의 압축 방식
- e.g.)
gzip
,deflate
,identify
- Content-Language
- 표현 데이터의 자연 언어
- e.g.)
ko
,en
,en-US
- Content-Length
- 표현 데이터의 바이트 길이
- Transfer-Encoding과 함께 사용하면 안됨
협상(Content-Negotiation)
content negotiation
은 user agent가 사용자에게 가장 알맞는 형태의 리소스를 받을 수 있도록, 리소스를 어떤 형태로 받을지 정할 수 있도록하게 하는 메커니즘입니다. 이때 리소스의 형태는 문서의 언어나, 이미지의 포맷이나, 콘텐츠의 인코딩에 해당하는 부분을 말합니다.Accept
: 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset
: 클라이언트가 선호하는 문자 인코딩
Accept-Encoding
: 클라이언트가 선호하는 압축 인코딩
Accept-Language
: 클라이언트가 선호하는 자연 언어
- 협상 헤더는 요청시에만 사용
- Quality Values(q) 값 사용
- 0~1 클수록 높은 우선순위, 생략하면 1
GET /event Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
GET /event Accept: text/*, text/plain, text/plain;format=flowed, */*
Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5
전송 방식
보통 응답시에만 사용
- 단순 전송
Content-Length
- 컨텐트의 길이를 알 수 있을 때
- 압축 전송
Content-Encoding
- 압축!
- 분할 전송
Transfer-Encoding
: chunked
- 범위 전송
Range
: 로 요청Content-Range
: 로 응답
일반 정보
From
- 유저 에이전트의 이메일 정보
Referer
- 이전 웹 페이지 주소
User-Agent
- 유저에이전트 애플리케이션 정보
Server
- 요청을 처리하는 오리진 서버의 소프트웨어 정보
Date
- 메시지가 생성된 날짜
특별한 정보
Host
- 요청한 호스트 정보
Location
- 3XX의 응답에 포함하면 자동으로 라디아렉트
- 201의 응답에 포함하여 새성된 리소스의 경로 정보 전달
Allow
- 허용 가능한 HTTP 메서드
- 405 Method Not Allowed의 응답에 포함
Retry-After
- 503 Service Unaviable의 응답에 포함
인증
Authorization
- 클라이언트 인증 정보를 서버에 전달
- e.g.) Authorization: Basic xxxxxxxxxxxxxxxx,
WWW-Authenticate
- 리소스 접근시 필요한 인증방법 정의
- 401 Unauthorized 응답과 함께 사용
쿠키
- Set-Cookie
- 서버에서 클라이언트로 쿠키 전달 (응답)
- Cookie
- 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달