대부분의 HTTP 응답에는 인간 사용자가 해석할 수 있는 엔터티가 포함된다. 당연히 사용자에게 요청에 해당하는 "가장 좋은" 엔티티를 제공하는 것이 좋지만
불행히도 서버와 캐시의 경우 모든 사용자가 동일한 선호을 갖고 있지 않으며 모든 사용자 에이전트가 모든 엔티티 유형을 동등하게 렌더링할 수 있는 것은 아닙니다.
그런 이유로 HTTP는 "콘텐츠 협상"을 위한 몇 가지 메커니즘을 제공합니다. 즉, 가능한 표현이 다양할 때, 주어진 응답에 대한 최상의 표현을 선택하는 프로세스입니다.
This is not called "format negotiation"
모든 응답은 협상의 대상이 될 수 있습니다.(Entity-Body, 오류 응답 포함)
가장 잘 맞는 프레젠테이션의 결정은 다음 두 개의 메커니즘 중 하나를 통해 이루어집니다:
서버주도협상
에이전트 주도 협상
<aside>
💡 These two kinds of negotiation may be used separately or in combination.
별도로 또는 조합(결합)하여 사용할 수 있습니다
</aside>
결합 방법 중 하나인 transparent negotiation는
캐시가 후속 요청에 대한 서버 주도 협상
을 제공하기 위해 원본 서버에서 제공한 에이전트 주도 협상 정보
를 사용할 때 발생합니다.