• 웹서버가 응답으로 전달하는 메시지의 인코딩 방식을 명시하는 헤더
  • 주로 Content-Type 헤더와 같이 사용 → Content-Type 헤더는 전달하는 컨텐츠의 포맷
  • Content-Encoding 헤더는 전달하는 메시지의 압축방식과 관련함
  • Content-Encoding 헤더는 HTTP 메시지 전송방식의 Transfer-Encoding 헤더와 비슷하면서도 차이가 있음
    1. Content-Encoding 헤더는 전달하는 컨텐츠 본래 형식으로 전송
    2. Transfer-Encoding 헤더는 HTTP 서버에 의해 적용되는 컨텐츠 전송
  • Content-Encoding 헤더는 미디어 타입을 압축하기 위해 사용
  • Content-Encoding 헤더가 존재하면, Content-Encoding 헤더의 값은 개체 본문에 컨텐츠 인코딩이 적용될지를 나타냄
  • Content-Type 헤더에 의해 참조되는 미디어 타입을 얻도록 디코드하는 방법을 클라이언트가 알게 해줌
  • 가능한 더 많은 데이터를 압축하기 위해 Content-Encoding 헤더 사용이 권고되지만, jpeg 이미지와 같은 유형의 리소스들은 이미 압축되어 때때로 추가적인 압축이 별 소용이 없고 페이로드를 더 길게 만들수도 있음


HTTP 에서는 Content-Encoding 의 값으로 총 4가지를 사용할 수 있음을 정의

  1. compress : 유닉스 시스템에서 사용하는 압축방식
  2. deflate : zlib 압축 포맷 -> RFC 1950에 정의
  3. gzip : gzip 프로그램을 이용하여 압축한 형태 -> RFC 1952에 정의
  4. identity : 특정한 압축 포맷이 사용되지 않았음을 의미


HTTP에서 Content-Encoding 사용 주의

  • 서버는 어떤 압축 방법도 사용하도록 강요받지 않음
  • 압축은 서버 설정과 사용되는 서버 모듈에 상당히 의존적


클라이언트가 요청한 aaa.pdf 파일에 대한 웹 서버의 응답 결과 확인

  • 웹서버의 응답헤더에서 Content-Encoding, Content-Type 결과 확인
    1. Content-Type : application/pdf → 문서가 PDF 형태의 문서
    2. Content-Encoding : gzip → 전달하는 메시지 인코딩 방식은 'gzip' 을 이용해서 전달

문법

Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity



디렉티브

  1. gzip
    • 32비트 CRC와 함께 Lempel-Ziv coding (LZ77)를 사용하는 압축 포맷
    • Unix gzip 프로그램의 포맷
    • HTTP/1.1 표준 컨텐츠 인코딩을 지원하는 서버는 호환성 목적으로, x-gzip 별칭의 인지가 권고
  1. compress
    • Lempel-Ziv-Welch (LZW) 알고리즘을 사용하는 압축 포맷
    • Unix 배포판으로부터 사라진 압축 프로그램으로, 오늘낭의 브라우저에서 사용 X
  1. deflate
    • deflate 압축 알고리즘과 함께 zlib 구조를 사용하는 압축 포맷
  1. br
    • Brotli 알고리즘을 사용하는 압축 포맷
  1. identity
    • 압축하지 않거나 수정하지 않은 경우를 표시
    • identity 값은 존재하지 않은 경우에도 항상 수용 가능


gzip을 이용해 압축 예시

  • 클라이언트 측에서, HTTP 요청 내에 함께 전송될 압축 목록을 알릴 수 있음 → 클라이언트에서 Accept-Encoding 헤더를 사용하여 컨텐츠 인코딩 협상을 위해 사용
  • 클라이언트에서 Accept-Encoding을 사용하여 웹 서버에게 압축 목록을 전달
    Accept-Encoding: gzip, deflate
  • 웹 서버는 사용한 Content-Encoding 응답 헤더에 표시하여 응답
    Content-Encoding: gzip

+ Recent posts