WEB HTTP/HTTP 기본

HTTP 헤더 - 콘텐츠 협상

진이최고다 2023. 3. 21. 12:08

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

협상(콘텐츠 네고시에이션)은 클라이언트와 서버 간의 요청/응답 과정에서 사용되는 기술로, 클라이언트가 선호하는 콘텐츠 형식(미디어 타입), 문자 인코딩, 압축 인코딩, 자연 언어 등을 서버와 협상하여 최종적으로 전송되는 콘텐츠의 형식을 결정하는 것이다.

클라이언트가 선호하는 콘텐츠 형식을 서버에게 전달하기 위해서는 다음과 같은 협상 헤더를 요청에 포함시켜야 한다.

  • Accept : 클라이언트가 선호하는 미디어 타입 전달
  • Accept-Charset : 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
  • Accept-Language : 클라이언트가 선호하는 자연 언어

협상 헤더는 요청 시에만 사용되며, 서버는 이를 바탕으로 클라이언트가 선호하는 콘텐츠 형식을 파악하여 응답할 수 있다. 이를 통해 클라이언트와 서버 간의 상호 운용성을 향상시키고, 콘텐츠 전송 시 발생할 수 있는 문제를 방지할 수 있다.

 


 

Accept-Language

01
Accept-Language적용전 / 후

HTTP 헤더의 Accept-Language은 웹 브라우저가 웹 서버에게 언어 환경을 요청할 때 사용하는 헤더로, 브라우저에서 선호하는 언어 및 지역 설정을 나타낸다.


Accept-Language 헤더는 대개 브라우저 설정 또는 운영 체제 설정에 따라 자동으로 설정되며, 사용자가 이를 수동으로 변경할 수도 있다. 이 헤더는 브라우저가 웹 사이트에서 사용 가능한 언어 목록을 보내서 서버가 해당 언어로 응답할 수 있도록 지원하는 역할을 한다.
다중 언어 환경에서 유용하며, 사용자가 선호하는 언어를 자동으로 인식하고 해당 언어로 컨텐츠를 제공함으로써 사용자 경험을 개선할 수 있으며, 이 헤더는 HTTP 요청 헤더의 일부이므로 서버 측에서 이를 읽어들일 수 있다.


Accept-Language - 복잡한 예시

예를 들어, 사용자가 한국어로 설정된 웹 브라우저에서 서버에 요청을 보낼 때,

서버가 독일어와 영어만 다중언어를 지원하는 경우, 사용자가 요청한 언어에 해당하는 콘텐츠를 제공할 수 없다.  이 경우, 서버는 사용자가 선호하는 언어에 해당하는 콘텐츠가 없으므로 기본 언어를 제공하게된다. 
이걸 위해서 우선순위가 필요하게된다.


 

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

Quality Values(q) 값을 사용하여 다중 언어 지원 시 우선순위를 부여할 수 있다.

Quality Values(q) 값은 0에서 1 사이의 값을 가지며, 이 값이 클수록 해당 언어에 대한 우선순위가 높아진다.. 만약 q 값이 생략되면 기본적으로 1이 적용된다.


예를 들어, Accept-Language 헤더 값이 ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7인 경우, 각 언어의 우선순위는 다음과 같다.

ko-KR;q = 1 (q 값이 생략되어 있으므로 기본값인 1이 적용됨)
ko;q = 0.9
en-US;q = 0.8
en:q = 0.7
이를 통해 서버는 클라이언트가 선호하는 언어 및 지역 설정을 파악하고, 가능한 경우 해당 언어로 응답을 제공할 수 있다.

만약 클라이언트가 요청한 언어를 지원하지 않는 경우, 서버는 다른 언어로 대체 응답을 제공할 수 있다.


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

Accept 헤더 값이 text/*, text/plain, text/plain;format=flowed, */*인 경우, 각 미디어 타입의 우선순위는 다음과 같다.
text/plain;format=flowed
text/plain
text/*
/

이때 구체적인 미디어 타입인 text/plain;format=flowed가 가장 높은 우선순위를 가지며, 이후에는 text/plain, text/*, */* 순으로 우선순위가 부여되고
이를 통해 서버는 클라이언트가 지원하는 미디어 타입을 파악하고, 가능한 경우 해당 미디어 타입으로 응답을 제공할 수 있다


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

동일한 미디어 타입이라면 quality value 값이 높은 것이 우선순위가 된다.

 

 

 

출처 : 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 by 우아한형제 김영한이사님