콘텐츠 협상

서버가 지원하지 않는다면 어쩔 수 없지만 클라이언트 측에서 콘텐츠 협상 요청이 가능하다!

협상(콘텐츠 네고시에이션) 클라이언트가 선호하는 표현 요청

  • 협상 헤더는 요청시에만 사용

  • Accept: 클라이언트가 선호하는 미디어 타입 전달

  • Accept-Charset: 클라이언트가 선호하는 문자 인코딩

  • Accept-Encoding: 클라이언트가 선호하는 압축 인코딩

  • Accept-Language: 클라이언트가 선호하는 자연 언어

Accept-Language 복잡한 예시

한국어를 선호하지만 다중 언어 지원서버는 독일어, 영어를 지원한다. 클라이언트는 한국어 지원이 안 된다면 독일어보다는 영어를 선호하지만 서버 측에서는 한국어를 지원하지 않기 때문에 독일어를 내보낸다. 하지만 아래의 Quality Values를 적용하면 서버는 영어를 보낸다!

협상과 우선순위1. Quality Values(q)

  • Quality Values(q)라는 값 사용

  • 0~1, 클수록 높은 우선순위

  • 생략하면 1

Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

  1. ko-KR;q=1 (q생략)

  2. ko;q=0.9

  3. en-US;q=0.8

  4. en:q=0.7

협상과 우선순위2. Quality Values(q)

  • 구체적인 것을 우선한다.

Accept: text/, text/plain, text/plain;format=flowed, /*

1. text/plain;format=flowed 2. text/plain 3. text/* 4. */*

협상과 우선순위3. Quality Values(q)

  • 구체적인 것을 기준으로 미디어 타입을 맞춘다.

Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,


text/html;level=2;q=0.4, */*;q=0.5

Last updated

Was this helpful?