HTTP 헤더 개요
용도가 너무나도 많다.

-
HTTP 전송에 필요한 모든 부가정보
예) 메시지 바디의 내용, 메시지 바디의 크기, 압축,인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보
-
표준 헤더가 너무 많음.
-
필요시 임의의 헤더 추가 기능
예) helloworld: hihi
HTTP BODY

- 메시지 본문(message body)을 통해 표현 데이터 전달
- 메시지 본문 = 페이로드(payload)
- 표현은 요청이나 응답에서 전달할 실제 데이터
- 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공
예) 데이터 유형(html,json), 데이터 길이, 압축 정보 등등
- 참고 : 원래 표현 헤더는 표현 메타데이터와, 페이로드 메시지를 구분해야 해야하지만 여기서는 생략
Content-Type

: 표현 데이터의 형식 설명
- text/html;charset=utf-8
- application/json
- image/png
Content-Encoding
: 표현 데이터 인코딩

: 표현 데이터 인코딩
- 표현 데이터를 압축하기 위해 사용
- 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가
- 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제
예) gzip, deflate, identity
Content-Language
: 표현 데이터의 자연 언어

- 표현 데이터의 자연 언어를 표현
- 예)
- ko
- en
- en-US
Content-Length
: 표현 데이터의 길이

- 바이트 단위
- Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안됨.
협상(콘텐츠 네고시에이션)
: 클라이언트가 선호하는 표현 요청
- Accept : 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
협상 헤더는 요청시에만 사용




여기서 우선순위를 볼 수 있다.
-
Quality Values(q) 값 사용
-
0 ~ 1, 클수록 높은 우선순위
-
생략하면 1
-
Accpet-Language : ko-KR, ko;q=0.9, en-US;q=0.8, en;q=0.7
- ko-KR;q=1(q생략)
- ko;q=0.9
- en-US;q=0.8
- en:q=0.7
-
구체적인 것이 우선한다.
-
Accept: text/* , text/plain, text/plain;format=flowed,
1. text/plain;format=flowed
- text/plain
- text/*
- */ *
- 구체적인 것을 기준으로 미디어 타입을 맞춘다.
- Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4,/*;q=0.5