Accept-Encoding
요청 헤더 Content

개요

Accept-Encoding은 클라이언트가 해독할 수 있는 콘텐츠 압축 방식을 서버에 알리는 요청 헤더입니다. 서버는 이 중 하나를 골라 본문을 압축한 뒤 Content-Encoding 헤더로 실제 사용한 방식을 알립니다.

자세히

gzip·br(Brotli)·deflate·zstd 같은 토큰을 나열하고, Accept처럼 `;q=` 가중치로 선호도를 조정할 수 있습니다. `identity`는 무압축을 뜻하며, `identity;q=0`으로 무압축을 거부할 수도 있습니다. 서버는 지원하는 방식 중 클라이언트가 받아들이는 것을 선택하고, 없으면 압축 없이 보내거나 406으로 응답할 수 있습니다.

압축은 텍스트(HTML·CSS·JS·JSON)에서 큰 대역폭 절감을 주지만, 이미 압축된 리소스(JPEG·PNG·mp4·zip)에는 이득이 거의 없습니다. 응답이 Accept-Encoding에 따라 달라지므로 캐시 정확성을 위해 `Vary: Accept-Encoding`을 반드시 함께 보내야 합니다.

이 헤더가 다루는 것은 종단 간(end-to-end) 콘텐츠 코딩입니다. 홉 단위(hop-by-hop) 전송 압축은 Transfer-Encoding과 그 짝인 TE 헤더가 담당하며, 개념이 다릅니다.

문법

Accept-Encoding: <coding>[;q=<weight>][, ...]

e.g. Accept-Encoding: gzip, deflate, br

지시어 / 값

gzip가장 널리 쓰이는 LZ77 기반 압축(RFC 1952).
brBrotli 압축. gzip보다 압축률이 높아 웹에서 선호됨.
deflatezlib/DEFLATE 압축. 구현 혼란으로 gzip보다 덜 선호됨.
zstdZstandard 압축. 빠르고 압축률이 좋아 지원이 확산 중.
identity압축하지 않음. `identity;q=0`은 무압축을 거부한다는 뜻.

실무 참고

관련 헤더

관련 상태코드

스펙 근거