Skip to content

17. 내용 협상과 트랜스코딩

HyoSang edited this page Apr 11, 2019 · 1 revision

내용 협상과 트랜스코딩

내용 협상 기법

  • 클라이언트 주도 : 클라이언트가 요청을 보내면 서버가 선택지를 주고 클라이언트가 선택한다
  • 서버 주도 : 서버가 클라이언트의 요청 헤더를 검증해서 어떤 버전을 제공할지 결정한다.
  • 투명 : 투명한 중간 장치가 서버를 대신하여 협상 한다.

클라이언트 주도 협상

  • 클라이언트가 서버가 준 선택지를 골라서 선택하는 방법
  • 서버 입장에서는 가장 구현하기 쉬운 방법
  • 각 페이지에 두번의 응답이 필요한것이 단점
  • 여러개의 URL이 필요하기도 하다

서버 주도 협상

  • 서버가 어떠한 콘텐츠를 제공할 지 선택하는 방법
  • 클라이언트는 서버에 정보를 제공해야하며 요청 헤더에 이 정보를 넣는다
  • Accept 관련 헤더를 들여다보거나 User-Agent 헤더에 기반해서 응답을 보내줄수도 있다.
  • Accept : 서버가 어떤 미디어 타입으로 보내도 되는지 알려준다. (Content-type)
  • Accept-Language : 서버가 어떤 언어로 보내도 되는지 알려준다. (Content-Language)
  • Accept-Charset : 서버가 어떤 차셋으로 보내도 되는지 알려준다. (Content-Type)
  • Accept-Encoding : 서버가 어떤 인코딩으로 보내도 되는지 알려준다 (Content-Encoding)

품질 값

  • 여러 카테고리 중에서 어떤것을 얼마나 선호하는지 표시하는 방법
  • 0.0 ~ 1.0 사이로 표시한다
  • ex) en;q=0.5, fr;q=0.0, nl;q=1.0, tr;q=0.0

투명 협상

  • 서버도 클라이언트도 아닌 중간의 프락시와 같은 중개자를 이용해서 협상하는 방법
  • Vary 헤더를 이용할 수 있다.

Vary 헤더

  • 서버가 문서를 선택하거나 커스텀 콘텐츠를 생성할 때 고려한 클라이언트 요청 헤더 모두를 명시한다.
  • ex) Vary : User-Agent, Cookie

트랜스코딩

  • 서버가 클라이언트의 요구에 맞는 문서를 아예 갖고 있지 않는 경우 클라이언트가 사용할 수 있는 무언가로 변환하는 방법
Clone this wiki locally