HTTP 헤더 개요

HTTP 표현?
Ex)
- text/html; charset=utf-8
- application/json
- image/png
- Content-Encoding : 데이터의 압축방식
Ex)
- gzip
- deflate
- identity : 압축하지 않는다는 뜻.
- Content-Language : 데이터의 자연언어
Ex)
- ko
- en
- en-US
주의점 : Transfer-Encoding 을 사용하면 Content-Length 를 사용 하면 안됨.
표현 헤더는 전송(Request), 응답(Response) 둘다 사용.
협상
- Accept : 클라이언트가 선호하는 미디어 타입 전달.
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩.
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩.
- Accept-Language : 클라이언트가 선호하는 자연 언어.
Request(요청)시에만 사용.
협상 우선순위
- Quality Values 값 사용
Ex) Accept-Language: ko-KR,ko;q=0.9,en-US;9=0.8,en;q=0.7
- 구체적인 것이 우선한다.
Ex) text/*, text/plain, text/plain;format=flowed, */*
1. text/plain;format=flowed
2. text/plain
3. text/*
4. */*
- 구체적인 것을 기준으로 미디어 타입을 맞춘다. (위에 2가지를 모두 합한 형태)
전송 방식
- 단순 전송 : 컨텐츠에 대한 길이를 알 수 있을 때 그 길이 만큼 정확히 한번에 전달.
- 압축 전송 : Content-Encoding 을 추가 하여 압축하여 전송(압축 방식을 명세)
- 분할 전송 : Transfer-Encoding : chunked 등을 추가하여 대용량 데이터를 분할 하여 전송하며 Content-Length 를 추가하면 안된다. (스트림 읽는 방식과 비슷한 것인가?)
- 범위 전송 : 클라이언트는 Range 를 통해 길이를 전달하고 (Ex) Range: bytes=1001-2000)
서버는 Content-Range 를 통해 받은 크기와 다음 받아야할 시작점을 전달 해 줌 (Ex) Content-Range: bytes 1001-2000 / 2000)
정보성 헤더 정보





특별한 정보







출처 김영한의 스프링 로드맵 - 모든 개발자를 위한 HTTP 웹 기본 지식