-
(14) HTTP - 콘텐츠 네고시에이션HTTP 웹/Http 웹 기본 2021. 7. 3. 18:36
1. 협상(콘텐츠 네고시에이션)이란?
1-1) 정의
클라이언트가 선호하는 표현 요청을 우선순위로 하여 달라고 함
- 요청시에만 사용(클라이언트가 서버에 전달)
- 서버에서 제공 가능하면 제공해줌- Accept : 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
1-2) Accept-Language 적용 전
(a) 과정
- /event 경로로 Host에 접속
- 서버는 기본en, 지원ko인 상황인데, Client가 언어 정보를 보내주지 않으므로 기본 en으로 서버가 정보 전송
1-3) Accept-Language 적용 후
(a) 과정
- 클라이언트가 서버에 요청시 헤더에 Accept-Language 전송
- 메세지 body에 한국어로 변경하여 전송
1-4) Accept-XX 복잡한 예시
(a) 상황 - 해결 전
> 한국어로 지원하였는데 서버가 독일 / 영어 만 지원하는 경우
그 다음 선호 언어를 선택할 때 한국어로 전송하여도 영어로 나오게 하고싶은 상황(b) 협상과 우선순위 1
- Quality Values(q) 라는 값을 추가하여 적어준 선호도 순으로 작동하게 함
- 0~1 사이의 값, 클수록 높은 우선순위
- 생략할 시 기본 값은 1
- ex) Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,,en;q=0.7
> 구분자는 ' , ' 콤마를 사용
- 1. ko-KR;q=1( ∵ 여기서는 생략되었음) → ko-KR 한국사람들이 쓰는 한국어
- 2. ko;q=0.9 → ko 한국어 안쓰지만 공용 한국어
- 3. en-US;q=0.8 → en-US 미국에서 쓰는 영어
- 4. en;q=0.7 → en 공통 영어 - 다음과 같이 고쳐짐
- 브라우저에서 실제 값
(c) 협상과 우선순위 2
> language에만 해당하는 것이 아닌 Accpet에 해당(미디어 타입)
- 구체적으로 적어준 Accept- xxx 가 먼저 우선순위로 적용됨
- ex) Accept: text/*, text/plain, text/plain;format=flowed, */*
1. text/plain;format=flowed
2. text/plain
3. text/*
4. */*
(d) 협상과 우선순위 3
> language에만 해당하는 것이 아닌 Accpet에 해당(미디어 타입)
- 구체적 순으로 매칭되는 것으로 미디어 타입을 맞춤
( regex 많이 매칭되는 것이 뒤로, 구체적으로 일치하는게 앞으로 )
- ex) Accept: text/*q=0/3, text/html;1=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5
참조
섹션 : HTTP 헤더1 - 일반 헤더
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
반응형'HTTP 웹 > Http 웹 기본' 카테고리의 다른 글
(16) HTTP - 일반 정보 & 특별한 정보 (0) 2021.07.05 (15) HTTP - 전송 방식 (0) 2021.07.05 (14) HTTP - 표현 (0) 2021.07.02 (13) HTTP - 헤더 개요 (0) 2021.07.02 (13) HTTP - HTTP 상태코드 (0) 2021.06.30