본문 바로가기
코딩 공부/CS

[HTTP] HTTP 헤더 - 콘텐츠 협상 (Content Negotiation)

by 현장 2023. 11. 10.

콘텐츠 협상 (Content Negotiation)

콘텐츠 협상(Content-Negotiation)이란 클라이언트 측에서 선호하는 표현을 요청하는 것을 말합니다. 헤더에 클라이언트가 선호하는 표현(옵션)을 명시하여 서버 측에 전송했을 때, 서버 측에서 해당 헤더의 내용을 보고 가능한 옵션이라면 해당 표현으로 응답 메세지를 전송합니다.

만일 클라이언트가 한국어(ko)를 선호한다면 헤더에 해당 내용을 명시하여 한국어 제공을 요청할 수 있습니다. 그리고 q(Quality value)를 통해 우선 순위를 정할 수 있기 때문에, 1순위 옵션을 제공받을 수 없다면 그다음 우선순위에 해당하는 옵션을 요청할 수도 있습니다.

 

🏷️ 콘텐츠 협상(Content-Negotiation) 종류

1. Accept

- 클라이언트가 선호하는 미디어 타입 전달합니다.   ex) Accpet: applicacon/json


※ Content-Type과 Accept의 차이점 : Content-Type은 message에 담긴 데이터가 어떤 미디어 타입인지 알려주는 것이고, Accept는 클라이언트가 어떤 종류의 미디어 타입을 선호하는지 알려주는 것이다. 

(Accept는 강제성이 없다.)

2. Accept-Charset

- 클라이언트가 선호하는 charecter set이 무엇인지 전달합니다.   ex) Accept-Charset: utf-8

3. Accept-Encoding

- 클라이언트가 선호하는 압축 인코딩이 무엇인지 전달합니다.    ex) Accept-Encoding: gzip

4. Accept-Language

- 클라이언트가 선호하는 자연 언어가 무엇인지 전달합니다.        ex) Accept-Language: ko

 


🏷️ 협상과 우선순위 Quality Values(q)

1. Quality Values(q) 값이 1에 가까울수록 우선순위가 높다.

q의 값은 0~1까지 설정이 가능하며, 클 수록 높은 우선순위를 가지며 q를 생략하면 1로 설정됩니다.

ex) Accept-Language: ko-KR, ko;q=0.9,en-US;q=0.8,en;q=0.7일 경우
1순위: ko-KR
2순위: ko;q=0.9
3순위: en-US;q=0.8
4순위: en;q=0.7

2. 구체적인 것이 우선순위가 높다.

더 구체적인 옵션의 우선순위가 더 높습니다.

ex) Accept: text/*, text/plain, text/plain;format=flowed, */* 일경우
1순위: text/plain;format=flowed
2순위: text/plain
3순위: text/*
4순위: */*

 

 

Reference

m42-orion

'코딩 공부 > CS' 카테고리의 다른 글

[CS] OAuth2.0  (1) 2023.12.27
인코딩, 해싱, 암호에 대하여  (0) 2023.12.25
CGI(Common Gateway Interface)  (0) 2023.05.18
[Network] TCP와 UDP  (0) 2023.05.18
[CS] 프로세스와 스레드  (0) 2023.02.25