์ธํ๋ฐ ๊ฐ์ ์ค ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์์ด๋ผ๋ ๊ฐ์์ ๋ํ TIL์ ๋๋ค.
HTTP ํค๋ 1 - ์ผ๋ฐ ํค๋
RFC 7230~7235์ HTTP ๋ฉ์์ง
ํํ์ด๋ ์์ฒญ์ด๋ ์๋ต์์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ฌํ ํํ ๋ฐ์ดํฐ๋ ํ์ด๋ก๋, ์ฆ ๋ฉ์์ง ๋ณธ๋ฌธ(Body)์ ํตํด ์ ๋ฌ๋๋ค. ์ด๋, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ฐ๊ฐ์ ์์ ๋ HTTP ๋ฉ์์ง์์ ํํ ๋ฐ์ดํฐ๋ค์ ํด์ํ ์ ์์ด์ผ ํ๋๋ฐ ์ด๋ฌํ ์ ๋ณด๋ค์ ํํ ํค๋์์ ์ ๊ณตํ๋ค. ๋ค์์ HTTP ๋ฉ์์ง์ ํํ ํค๋์ ์์๋ค์ด๋ค.
Content-Type
ํํ ๋ฐ์ดํฐ์ ํ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํค๋์ด๋ค. ๋ค์์ ์ฌ์ฉ ์์์ด๋ค.
1. Content-Type: text/html;charset=UTF-8
=> ํํ ๋ฐ์ดํฐ์ ํ์์ด HTML ํ์ผ์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๋ค.
2. Content-Type: application/json
=> ํํ ๋ฐ์ดํฐ์ ํ์์ด json์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๋ค.
3. Content-Type: image/png
=> ํํ ๋ฐ์ดํฐ์ ํ์์ด png ํ์ผ์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๋ค.
Content-Encoding
ํํ ๋ฐ์ดํฐ์ ์ธ์ฝ๋ฉ ์ ๋ณด, ์ฆ ์์ถ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํค๋์ด๋ค. ํฌ๊ธฐ๊ฐ ํฐ ํํ ๋ฐ์ดํฐ๋ฅผ ์์ถํด์ ์ ๋ฌํ ๋ ์์ถ ํ ์ธ์ฝ๋ฉ ํค๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ชฝ์์ ์ธ์ฝ๋ฉ ํค๋์ ์ ๋ณด๋ก ์์ถ์ ํด์ ํ ์ ์๊ฒ ๋๋ค. ์ข ๋ฅ๋ก๋ gzip, deflate, identity(์ธ์ฝ๋ฉ X)๋ฑ์ด ์๋ค.
Content-Language
ํํ ๋ฐ์ดํฐ์ ์์ฐ ์ธ์ด์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํค๋์ด๋ค. ์์ฐ ์ธ์ด๋ ์ค์ ์ฌ๋์ด ์ฐ๋ ์ธ์ด๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด, ko๋ ํ๊ตญ์ด, en์ ์์ด, en-US๋ ๋ฏธ๊ตญ์ ์์ด๋ฅผ ์๋ฏธํ๋ค.
Content-Length
ํํ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ํ๋ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํค๋์ด๋ค.
Host
HTTP ์์ฒญ ๋ฉ์์ง์์ ํ์์ ์ผ๋ก ์ฌ์ฉ๋๋ ํค๋์ด๋ค. ์์ฒญํ ํธ์คํธ ์ ๋ณด(๋๋ฉ์ธ)์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค. ํด๋น ํค๋๊ฐ ํ์์ ์ผ๋ก ์ฌ์ฉ๋์ด์ผํ๋ ์ด์ ๋ ํ๋์ ์๋ฒ๊ฐ ์ฌ๋ฌ ๋๋ฉ์ธ์ ์ฒ๋ฆฌํด์ผํ ๋, ํ๋์ IP ์ฃผ์์ ์ฌ๋ฌ ๋๋ฉ์ธ์ด ์ ์ฉ๋์ด ์์ ๋์์ฒญ์ ๋ฐ๋ ํธ์คํธ๊ฐ ์ ํํ๊ฒ ๋ช ์๊ฐ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ ๊ฐ์์๋ฃ๋ฅผ ๋ณด์.
ํ์(Contents Negotiation)
ํ์์ด๋, ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ํํ์ ์์ฒญํ๋ ๊ฒ์ ๋งํ๋ค. ๋ฐ๋ผ์, ํ์ ํค๋๋ ์์ฒญ ์์๋ง ์ฌ์ฉํ๋ค.
๋ค์์ ํ์ ํค๋์ ์์๋ค์ด๋ค.
- Accept: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ๋ฏธ๋์ด ํ์ (Content-Type์ ํ์ ํค๋)
- Accept-Charset: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ
- Accept-Encoding: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์์ถ ์ธ์ฝ๋ฉ(Content-Encoding์ ํ์ ํค๋)
- Accept-Language: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์์ฐ ์ธ์ด(Content-Language์ ํ์ ํค๋)
ํ์ ํค๋๋ฅผ ์ฌ์ฉํด์ ์์ฒญํ ๋ ํด๋ผ์ด์ธํธ์ ์ ํธ ํํ์ ๋ํ ์ฐ์ ์์์ ๋ํ ์ ๋ณด๋ ์ ๋ฌํ ์ ์๋ค. ์ฐ์ ์์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง์ด๋ค.
Quality Values(q)
q๋ผ๋ ๊ฐ์ ์ฌ์ฉํด์ ์ฐ์ ์์๋ฅผ ํํํ๋ค. 0~1์ ์ค์๋ก ํํํ ์ ์๋๋ฐ ํด์๋ก ๋์ ์ฐ์ ์์๋ฅผ ์๋ฏธํ๋ค. 1์ธ ๊ฒฝ์ฐ๋ ์๋ตํ ์ ์๋ค.
๋ค์์ ์ฌ์ฉ ์์์ด๋ค.
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
ko-KR, ์ฆ ๋ํ๋ฏผ๊ตญ์ ํ๊ตญ์ด๋ q๊ฐ์ด ์๋ต๋์์ผ๋ 1์ด๋ค. ko, ์ฆ ๊ณตํต ํ๊ตญ์ด๋ q๊ฐ์ด 0.9๋ก ๋ ๋ฒ์งธ๋ก ์ฐ์ ์์๊ฐ ๋๋ค. ์ฐจ๋ก๋ก, en-US๋ 0.8, en์ 0.7๋ก ์ฐ์ ์์๊ฐ ๋ํ๋์ ธ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ตฌ์ฒด์ ์ธ ์ ๋ณด
ํ์ ํค๋์ ๋ด๊ฒจ์๋ ์ ๋ณด๊ฐ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ผ์๋ก ์ฐ์ ์์๊ฐ ๋๋ค. ๋ค์ ์ฌ์ฉ ์์๋ฅผ ๋ณด์
Accept: text/*, text/plain, text/plain;format=flowed, */*
ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ๋ฏธ๋์ด ํ์ ์ ๋ํ ํ์ ํค๋์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋, text/plain;format=flowed๊ฐ ์ ์ผ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด์ด๋ค. ๋ฐ๋ผ์ ํด๋น ๋ฏธ๋์ด ํ์ ์ด ์ ์ผ ์ฐ์ ์์๊ฐ ๋๋ค. ์ฐจ๋ก๋ก, text/plain, text/*, */* ์์ผ๋ก ์ฐ์ ์์๊ฐ ์ ํด์ง๋ค.
Quality Values(q) & ๊ตฌ์ฒด์ ์ธ ์ ๋ณด
q๊ฐ๊ณผ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ฅผ ํผํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ๋ค์ ์ฌ์ฉ ์์๋ฅผ ๋ณด์.
Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5
ํ์ ํค๋๊ฐ ์์ ๊ฐ์ด ๋์ด์์ ๋ ์๋ฒ์์๋ ์๋ ํ์ ๊ฐ์ ์ฐ์ ์์์ ๋ฐ๋ผ ์๋ตํด์ค๋ค.
Media Type | Quality |
text/html;level=1 | 1 |
text/html | 0.7 |
text/html;level=3 | 0.7 |
image/jpeg | 0.5 |
text/html;level=2 | 0.4 |
text/plain | 0.3 |
'CS > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] - HTTP ๋ฉ์๋์ ํ์ฉ (2) | 2024.11.20 |
---|---|
[HTTP] - HTTP ๋ฉ์๋ (0) | 2024.11.08 |
[HTTP] - HTTP ํ๋กํ ์ฝ์ ํน์ง (3) | 2024.11.07 |
[HTTP] - URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (1) | 2024.11.04 |
[HTTP] - ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2024.11.03 |
๋๊ธ