HTTP 헤더란?
- HTTP 전송에 필요한 모든 부가정보를 넣는 부분이다.
- 예를 들어 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트 등등 많은 정보가 들어가게된다.
- 그렇기에 무수히 많은 필드가 존재하며, 필요시에는 임의의 필드를 만들 수도 있다.
- 헤더는 보통 다음과 같은 구조를 가지고 있다.
- Field-name : OWS field-value OWS (OWS=띄어쓰기 허용)
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
-----------------------------------------------
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length:3323
<html>
<body>...</body>
<html>
- 위 내용에서는 Content-Type: text/html;charset=UTF-8이 헤더가 되는 것이다.
그럼 먼저 이전에 사용되던 HTTP 헤더를 살펴보자.
RFC2616 (이전에 사용되던 HTTP 표준)
- General 헤더
- 메시지 전체에 적용되는 정보가 들어있다.
- ex_) Connection: close
- Request 헤더
- 요청 정보에 대한 정보가 들어있다.
- ex_) User-Agent: Mozilla/5.0 (Macintosh; ..)
- Response 헤더
- 응답 정보에 대한 정보가 들어있다.
- ex_) Server: Apache
- Entity 헤더
- 엔티티 바디에 대한 정보가 들어있다.
- 엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보를 제공한다.
- 데이터 유형 html, json / 데이터 길이 / 압축 정보 등
- ex_) Content-Type: text/html, Content-Length: 3323
- 엔티티 본문 (Entity body)
- 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터를 뜻한다.
- 메시지 본문 (Message body)
- 메시지 본문은 엔티티 본문(entity body)를 전달하는데 사용된다.
⇒ 최신 스펙인 RFC723x 버전이 나오면서 엔티티 본문의 개념이 바뀌게 된다.
RFC7230
- 엔티티(Entity)의 개념이 표현(Representation)이라는 개념으로 변경되었다.
- 명칭이 바뀌었다고 생각해도 무방하지만,
좀 더 Body 데이터에 걸맞게 변경되었다고한다.