- 웹서버가 응답으로 전달하는 메시지의 인코딩 방식을 명시하는 헤더
- 주로 Content-Type 헤더와 같이 사용 → Content-Type 헤더는 전달하는 컨텐츠의 포맷
- Content-Encoding 헤더는 전달하는 메시지의 압축방식과 관련함
- Content-Encoding 헤더는 HTTP 메시지 전송방식의 Transfer-Encoding 헤더와 비슷하면서도 차이가 있음
- Content-Encoding 헤더는 전달하는 컨텐츠 본래 형식으로 전송
- Transfer-Encoding 헤더는 HTTP 서버에 의해 적용되는 컨텐츠 전송
- Content-Encoding 헤더는 미디어 타입을 압축하기 위해 사용
- Content-Encoding 헤더가 존재하면, Content-Encoding 헤더의 값은 개체 본문에 컨텐츠 인코딩이 적용될지를 나타냄
- Content-Type 헤더에 의해 참조되는 미디어 타입을 얻도록 디코드하는 방법을 클라이언트가 알게 해줌
- 가능한 더 많은 데이터를 압축하기 위해 Content-Encoding 헤더 사용이 권고되지만, jpeg 이미지와 같은 유형의 리소스들은 이미 압축되어 때때로 추가적인 압축이 별 소용이 없고 페이로드를 더 길게 만들수도 있음
HTTP 에서는 Content-Encoding 의 값으로 총 4가지를 사용할 수 있음을 정의
- compress : 유닉스 시스템에서 사용하는 압축방식
- deflate : zlib 압축 포맷 -> RFC 1950에 정의
- gzip : gzip 프로그램을 이용하여 압축한 형태 -> RFC 1952에 정의
- identity : 특정한 압축 포맷이 사용되지 않았음을 의미
HTTP에서 Content-Encoding 사용 주의
- 서버는 어떤 압축 방법도 사용하도록 강요받지 않음
- 압축은 서버 설정과 사용되는 서버 모듈에 상당히 의존적
클라이언트가 요청한 aaa.pdf 파일에 대한 웹 서버의 응답 결과 확인
- 웹서버의 응답헤더에서 Content-Encoding, Content-Type 결과 확인
- Content-Type : application/pdf → 문서가 PDF 형태의 문서
- Content-Encoding : gzip → 전달하는 메시지 인코딩 방식은 'gzip' 을 이용해서 전달
문법
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
디렉티브
- gzip
- 32비트 CRC와 함께 Lempel-Ziv coding (LZ77)를 사용하는 압축 포맷
- Unix gzip 프로그램의 포맷
- HTTP/1.1 표준 컨텐츠 인코딩을 지원하는 서버는 호환성 목적으로, x-gzip 별칭의 인지가 권고
- compress
- Lempel-Ziv-Welch (LZW) 알고리즘을 사용하는 압축 포맷
- Unix 배포판으로부터 사라진 압축 프로그램으로, 오늘낭의 브라우저에서 사용 X
- deflate
- deflate 압축 알고리즘과 함께 zlib 구조를 사용하는 압축 포맷
- br
- identity
- 압축하지 않거나 수정하지 않은 경우를 표시
- identity 값은 존재하지 않은 경우에도 항상 수용 가능
gzip을 이용해 압축 예시
- 웹 서버는 사용한 Content-Encoding 응답 헤더에 표시하여 응답
Content-Encoding: gzip