네트워크 심화 - 콘텐츠 협상 헤더

YoungJoon Suh·2022년 4월 20일
0

콘텐츠 협상 (Content negotiation) : 클라이언트가 선호하는 표현 요청
Accept: 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset: 클라이언트가 선호하는 문자 인코딩
Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
Accept-Language: 클라이언트가 선호하는 자연 언어

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

Accept-Language 헤더를 통해 클라이언트가 원하는 언어를 어떻게 서버에 요청할 수 있는지 알아봅시다.
한국어 브라우저에서 특정 웹사이트에 접속했을 때 콘텐츠 협상(Accept-Language)이 적용되지 않았다면 서버는 요청으로 받은 우선순위가 없으므로 기본 언어로 설정된 영어로 응답합니다.
클라이언트에서 Accept-Language로 KO를 작성해 요청한다면 서버에서는 해당 우선순위 언어를 지원할 수 있기 때문에 한국어로 된 응답을 돌려줍니다.

클라이언트는 한국어를 선호하기에 Accept-Language에 한국어를 요청했지만 서버는 한국어를 지원하지 않으며 기본 언어는 독일어로 설정되어 있습니다.
클라이언트는 독일어는 너무 어렵기 때문에 한국어가 안되면 영어로라도 응답을 받기 원합니다.

협상과 우선순위 (Quality Values(q))
GET /event
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
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

이와 같은 문제를 해결하기 위해 협상에서는 원하는 콘텐츠에 대한 우선순위를 지정할 수 있습니다.
1부터 0까지 우선순위를 부여하면 이를 토대로 서버는 응답을 지원합니다.
1순위인 한국어를 서버에서는 지원하지 않지만 2순위인 영어를 지원하기에 서버에서는 우선 순위에 있는 영어를 독일어보다 클라이언트가 선호하기에 영어로 응답을 주게 됩니다.

profile
저는 서영준 입니다.

0개의 댓글