๊ฐœ๋ฐœ ์ง€์‹/HTTP ์ง€์‹

๐ŸŒ HTTP ์ฝ˜ํ…์ธ  ํ˜‘์ƒ(Content Negotiation) ์ดํ•ดํ•˜๊ธฐ

์ธํŒŒ_ 2022. 12. 26. 07:43

http-Content-Negotiation

HTTP ์ฝ˜ํ…์ธ  ํ˜‘์ƒ ์ด๋ž€?

ํ•ด์™ธ์—์„œ ์„œ๋น„์Šค ๋˜๋Š” ์‚ฌ์ดํŠธ ์ธ๋ฐ๋„, ํ•œ๊ตญ์—์„œ ์ ‘์†ํ•˜๋ฉด ์ปจํ…์ธ ๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ณด์—ฌ์ฃผ๊ณ , ์ผ๋ณธ์—์„œ ์ ‘์†ํ•˜๋ฉด ์ผ๋ณธ์–ด๋กœ ์ž๋™์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ํ•œ๋ฒˆ ์ฏค์€ ๊ฒช์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ํŠน๋ณ„ํžˆ ์ง์ ‘ ์‚ฌ์ดํŠธ์˜ ์–ธ์–ด ์ง€์› ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ์„œ๋ฒ„์—์„œ ์Šค์Šค๋กœ ํŒŒ์•…ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๋‹น๋˜๋Š” ์–ธ์–ด ํŽ˜์ด์ง€๋ฅผ ๊ณจ๋ผ ํ‘œ์‹œํ•ด์ฃผ๋Š” ๊ฒƒ์ผ๊นŒ?

http-Content-Negotiation

์ด๊ฒƒ์ด ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ HTTP ์ฝ˜ํ…์ธ  ํ˜‘์ƒ(Contents Negotiation)์„ ํ†ตํ•ด ์ด๋ฃจ์–ด ์ง€๋Š” ๊ฒƒ์ด๋‹ค.

์ฝ˜ํ…์ธ  ํ˜‘์ƒ์ด๋ž€, ์›น๋ธŒ๋ผ์šฐ์ €(user-agent)๊ฐ€ ์ด์šฉ์ž์—๊ฒŒ ์•Œ๋งž๋Š” ํ˜•ํƒœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก, ๋ฆฌ์†Œ์Šค๋ฅผ ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋ฐ›์„์ง€ ์ •ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ผ์ปซ๋Š”๋‹ค. ์ด๋•Œ ๋ฆฌ์†Œ์Šค์˜ ํ˜•ํƒœ๋Š” ๋ฌธ์„œ์˜ ์–ธ์–ด๋‚˜ ์ด๋ฏธ์ง€ ํฌ๋งท, ์ธ์ฝ”๋”ฉ ๋“ฑ์„ ๋งํ•œ๋‹ค.

http-Content-Negotiation

์ฝ˜ํ…์ธ  ํ˜‘์ƒ์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • ์„œ๋ฒ„ ์ฃผ๋„์  ํ˜‘์ƒ(server-driven/proactive negotiation) :
    • ์ฝ˜ํ…์ธ  ํ˜‘์ƒ์˜ ์ฃผ๋„๊ถŒ์ด ์„œ๋ฒ„์— ์žˆ์Œ.
    • ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ ํ˜ธํ•˜๋Š” ์„ค์ •๊ฐ’์ด ๋‹ด๊ธด HTTP ํ˜‘์ƒ ํ—ค๋”๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ํ˜•ํƒœ์˜ ์ฝ˜ํ…์ธ ๊ฐ€ ์ ์ ˆํ•œ์ง€ ํ—ค๋”์— ๋‹ด๊ธด ๋‚ด์šฉ๊ณผ ๋‚ด๋ถ€์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ๊ณจ๋ผ ์‘๋‹ตํ•œ๋‹ค.
  • ์—์ด์ „ํŠธ ์ฃผ๋„์  ํ˜‘์ƒ(agent-driven/reactive negotiation) :
    • ์ฝ˜ํ…์ธ  ํ˜‘์ƒ์˜ ์ฃผ๋„๊ถŒ์ด ํด๋ผ์ด์–ธํŠธ์— ์žˆ์Œ.
    • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ํ˜•ํƒœ(representation)์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(content-type, quality, language)์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์•Œ๋ฆฌ๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฌ๊ธฐ์„œ ์•Œ๋งž์€ ํ˜•ํƒœ๋ฅผ ๊ณ ๋ฅด๊ณ  ๋‹ค์‹œ ์„œ๋ฒ„์— ์žฌ์š”์ฒญํ•œ๋‹ค.

๋ณต์žกํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋†“์•˜์ง€๋งŒ, ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ๋ฆฌ์†Œ์Šค์˜ ์„ ํƒ๊ถŒ์ด ์„œ๋ฒ„๋ƒ ํด๋ผ์ด์–ธํŠธ๋ƒ ์ฐจ์ด์ผ ๋ฟ์ด๋‹ค. ์ด์ค‘ ๋Œ€์ฒด๋กœ ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ํ†ต์ƒ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์„œ๋ฒ„ ์ฃผ๋„์  ํ˜‘์ƒ์€ HTTP ํ—ค๋”์˜ Accept ํ—ค๋”์— ๋‹ด๊ธด ๊ฐ’์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ๊ทธ ํ†ต์‹  ํ๋ฆ„์„ ์•Œ์•„๋ณด์ž.


์ฝ˜ํ…์ธ  ํ˜‘์ƒ ํ—ค๋”

HTTP ํ—ค๋”์—๋Š” ์„œ๋ฒ„ ์ฃผ๋„์  ํ˜‘์ƒ์„ ์ผ์œผํ‚ค๊ฒŒ ํ•˜๋Š” ํŠน์ • ํ—ค๋”๋“ค์ด ์žˆ๋‹ค. ์ด๋“ค์„ ํ˜‘์ƒ ํ—ค๋”๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํ˜‘์ƒ ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํ˜ธํ•˜๊ฑฐ๋‚˜ ์šฐ์„ ๋˜๋Š” ํ‘œํ˜„ ์ •๋ณด๋ฅผ ์š”์ฒญ ์‹œ ํ•จ๊ป˜ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•œ๊ตญ์–ด๋กœ ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด, ์„œ๋ฒ„์—์„œ ํ˜‘์ƒ ํ—ค๋”๋ฅผ ๋ฐ›๊ณ  ํŒŒ์•…ํ•˜์—ฌ ์ •๋ณด๋ฅผ ์‘๋‹ตํ•˜๋Š” ์‹์œผ๋กœ ์ด๋ฃจ์–ด ์ง„๋‹ค. ๋˜ํ•œ '์„ ํ˜ธ' ํ‘œํ˜„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ '์ง€์› ์œ ๋ฌด' ๋กœ์„œ๋„ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋กœ์ธํ•ด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ์ „์†กํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ ๋‚ญ๋น„๋ฅผ ์ค„์ผ์ˆ˜๋„ ์žˆ๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

http-Content-Negotiation

ํ˜‘์ƒ ํ—ค๋” ์„ค๋ช…
Accept ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๋ฏธ๋””์–ด ํƒ€์ž…
Accept: text/* : text ๋ฏธ๋””์–ดํƒ€์ž…์€ ๋ชจ๋‘ ๋ณด๋‚ด๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๋ฏธ
Accept-Charset ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ
Accept-Encoding ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์••์ถ• ์ธ์ฝ”๋”ฉ
gzip , compress , deflate , br , identity
Accept-Language ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์ž์—ฐ ์–ธ์–ด
Accept-Language: en :์˜์–ด๋กœ ๋œ ์ปจํ…์ธ ๋ฅผ ๋ฐ›๊ธธ ์„ ํ˜ธํ•œ๋‹ค๋Š” ์˜๋ฏธ

 

์ฝ˜ํ…์ธ  ํ˜‘์ƒ ์˜ˆ์‹œ

 

1. ํ˜‘์ƒ ํ—ค๋” ๋ฏธ์ ์šฉ

http-Content-Negotiation

  1. ํ•œ๊ตญ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒคํŠธ ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์กฐํšŒ๋ฅผ ํ•˜์˜€๋‹ค.
  2. ์„œ๋ฒ„๋Š” ์ปจํ…์ธ  ํ‘œํ˜„ ํ—ค๋” Content-Languages ๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ๊ธฐ๋ณธ ์–ธ์–ด์ธ '์˜์–ด' ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ๋‹ค. (miss)

 

2. ํ˜‘์ƒ ํ—ค๋” ์ ์šฉ

http-Content-Negotiation

  1. ํ•œ๊ตญ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒคํŠธ ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์กฐํšŒ๋ฅผ ํ•˜์˜€๋‹ค. ์ด๋–„ Accept-Language ํ˜‘์ƒ ํ—ค๋”๋กœ 'ko'๋ฅผ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญ ํ•˜์˜€๋‹ค.
  2. ์„œ๋ฒ„๋Š” ํ˜‘์ƒ ํ—ค๋”๋ฅผ ํ•ด์„ํ•˜๊ณ , ์„œ๋ฒ„์—์„œ 'ํ•œ๊ตญ์–ด'๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…์ธ  ํ‘œํ˜„ ํ—ค๋” Content-Languages ๋ฅผ ํ†ตํ•ด 'ํ•œ๊ตญ์–ด' ํŽ˜์ด์ง€๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ „์†กํ•œ๋‹ค.

์ฝ˜ํ…์ธ  ์šฐ์„ ์ˆœ์œ„

์œ„์ฒ˜๋Ÿผ ์„œ๋ฒ„๊ฐ€ ๋นต๋นตํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ์–ธ์–ด๋ฅผ ์ง€์›ํ•  ๊ฒฝ์šฐ, ๋‹จ์ˆœํ•˜๊ฒŒ ์„œ๋ฒ„์—์„œ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™ ๋งŒํ•œ ๊ฒฝ์šฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด์ผ ๊ฒฝ์šฐ ๊ทธ ๋‹ค์Œ ์„ ํ˜ธํ•˜๋Š” ์ตœ์šฐ์„  ์–ธ์–ด๋กœ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋…์ผ์–ด๊ฐ€ ๊ธฐ๋ณธ์ธ ํ™ˆํŽ˜์ด์ง€์—์„œ ํ•œ๊ตญ์–ด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ๋Š”๋ฐ ํ•œ๊ตญ์–ด๋ฅผ ์ง€์›์•ˆํ•˜๋ฉด ๋…์ผ์–ด๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์˜์–ด๊ฐ€ ๋‚˜์˜ค๋„๋ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ˜ํ…์ธ  ์šฐ์„ ์ˆœ์œ„ ์˜ˆ์‹œ

 

1. ํ˜‘์ƒ ์šฐ์„ ์ˆœ์œ„ ๋ฏธ์ ์šฉ

http-Content-Negotiation

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์กฐํšŒ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ Accept-Language ํ˜‘์ƒ ํ—ค๋”๋กœ 'ํ•œ๊ตญ์–ด' ๋ฅผ ์ง€์ •ํ•˜์˜€๋‹ค.
  2. ๊ธฐ๋ณธ ์–ธ์–ด๊ฐ€ '๋…์ผ์–ด'๋กœ ๋œ ์„œ๋ฒ„๋Š” 'ํ•œ๊ตญ์–ด'๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์–ธ์–ด์ธ '๋…์ผ์–ด' ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ๋‹ค.

 

2. ํ˜‘์ƒ ์šฐ์„ ์ˆœ์œ„ ์ ์šฉ

http-Content-Negotiation

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒคํŠธ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์กฐํšŒ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ Accept-Language ํ˜‘์ƒ ํ—ค๋”๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜์˜€๋‹ค. ์ง€์ •๋œ ์šฐ์„ ์ˆœ์œ„๋Š” `ํ•œ๊ตญ์–ด' , '์˜์–ด' ์ˆœ์ด๋‹ค.
  2. ์„œ๋ฒ„๋Š” 'ํ•œ๊ตญ์–ด'๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 'ํ•œ๊ตญ์–ด' ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•ด์ค„ ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ฐจ์ˆœ์œ„์ธ '์˜์–ด'๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— '์˜์–ด' ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ๋‹ค.

 

ํ˜‘์ƒ ํ—ค๋” ์šฐ์„ ์ˆœ์œ„ ์ง์ ‘ ์ง€์ •

์ด์ฒ˜๋Ÿผ ํ˜‘์ƒ ํ—ค๋”๋“ค์˜ ํŠน์ง•์œผ๋กœ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์—ฌ๋Ÿฌ๊ฐœ ์ฃผ์–ด ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํƒ€์ž…์„ ์ง€์› ์•ˆํ• ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„  Accept-Language ํ˜‘์ƒ ํ—ค๋”์— ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์„ ์ฝค๋งˆ(,)๋กœ ์—ด๊ฑฐํ•จ์œผ๋กœ์จ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์•Œ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋งŒ ํ˜‘์ƒ ํ—ค๋”์˜ ์šฐ์„ ์ˆœ์œ„ ์ง€์ •์— ๋ช‡๊ฐ€์ง€ ๋ฌธ๋ฒ•๊ณผ ๊ทœ์น™์ด ์กด์žฌํ•œ๋‹ค. ์šฐ์„  ์–ธ์–ด ์ง€์ •(ko) ์˜†์— ์žˆ๋Š” q ๋Š” Quality Values์˜ ์•ฝ์ž๋กœ์„œ 0 ~ 1 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ํด ์ˆ˜๋ก ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋œปํ•œ๋‹ค. (๋งŒ์ผ ์ƒ๋žตํ•˜๋ฉด 1 ๊ฐ€์žฅ ๋†’์Œ์ด ๋œ๋‹ค)

http-Content-Negotiation

๋”ฐ๋ผ์„œ ์œ„์˜ ํ—ค๋”๋ฅผ ํ•ด์„ํ•˜์ž๋ฉด ์ฝ˜ํ…์ธ  ์–ธ์–ด์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.

  1. ko-KR;q=1 (q์ƒ๋žต)
  2. ko;q=0.9
  3. en-US;q=0.8
  4. en:q=0.7
Accept-Language ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ˜‘์ƒ ํ—ค๋”๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ํ˜‘์ƒ ํ—ค๋” ์šฐ์„ ์ˆœ์œ„ ์ž๋™ ์ง€์ •

์ถ”๊ฐ€์ ์œผ๋กœ ํ˜‘์ƒ ํ—ค๋”์˜ ๊ฐ’๋“ค์˜ ์šฐ์„ ์ˆœ์œ„์—๋Š” ๊ตฌ์ฒด์ ์ธ ๊ฐ’๋“ค์ด ์šฐ์„ ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด Accept ํ—ค๋”์— ๋ฏธ๋””์–ด ํƒ€์ž…๋“ค์˜ ์šฐ์„ ์ˆœ์˜๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด, ์ด๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.

http-Content-Negotiation

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

 

๋ฌผ๋ก  q ํŒŒ๋ผ๋ฏธํ„ฐ์™€๋„ ํ•จ๊ป˜ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์‘์šฉํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

http-Content-Negotiation
http-Content-Negotiation

  1. text/html;level=1
  2. text/html;q=0.7
  3. */*;q=0.5
  4. text/html;level2;q=0.4
  5. text/*;q=0.3

# ์ฐธ๊ณ ์ž๋ฃŒ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๊น€์˜ํ•œ

https://www.w3.org/blog/2006/02/content-negotiation/