클라이언트가 Accept-Encoding 헤더를 생략하면 압축된 데이터 반환

클라이언트가 Accept-Encoding 헤더를 생략하면 압축된 데이터 반환

에서HTTP 1.1 표준, "요청에 Accept-Encoding 필드가 없으면 사용자 에이전트가 모든 콘텐츠 코딩을 허용하는 것으로 간주합니다."라고 표시됩니다.

이는 예를 들어 accept-encoding 필드가 생략된 경우 서버가 gzip으로 인코딩된 응답 본문을 반환할 수 있음을 의미합니다.

그러나 실제로는 가장 일반적으로 사용되는 서버(예: Apache, nginx)에서는 이 작업을 수행하지 않으며 해당 필드가 생략되면 압축되지 않은 응답을 보낼 것 같습니다.

보다 구어적인 동작은 클라이언트가 명시적으로 제안한 인코딩만 사용하는 것이라고 말하는 것이 공정합니까? 이는 표준에 어긋남에도 불구하고 클라이언트가 처리할 수 있는 인코딩 목록을 제공하도록 하는 보다 논리적인 행동 과정처럼 보입니다.

답변1

헤더 가 없더라도 인코딩이 허용되지 않는 것으로 간주됩니다 Accept-Encoding. 다른 지침이 부족하여 압축을 하지 않는 것이 일반적인 선택입니다. 사양에서 명시적으로 허용하는 작업을 저장합니다.

표현에 콘텐츠 코딩이 없는 경우 "identity"에 대한 보다 구체적인 항목 없이 "identity;q=0" 또는 "*;q=0"을 나타내는 Accept-Encoding 필드에 의해 특별히 제외되지 않는 한 기본적으로 허용됩니다. .

또는 제공되지 않은 경우 Accept-Encoding구현은 일부 알고리즘을 통해 원하는 것을 선택할 수 있습니다. 콘텐츠 협상을 건너뛰면 클라이언트가 인코딩으로 무엇을 해야 할지 알 수 없게 되는 약간의 위험이 있습니다. 개인적으로는 싶지만 Content-Encoding: zstd2022년 현재 사용자 에이전트에서는 일반적이지 않습니다.

관련 정보