๋ชฉ์ฐจ
Content-Type, MIME type, media type์ ๊ด๊ณ
- ์ด๋ค์ ๋ชจ๋ ๊ฐ์ ๊ฐ๋ ์ผ๋ก, ์ธํฐ๋ท์์ ํ์ผ ํฌ๋งท๊ณผ ์ฝํ ์ธ ๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ
- ๊ณผ๊ฑฐ์๋ MIME type ์ผ๋ก ๋ถ๋ ธ์ง๋ง, ์ง๊ธ์ media type ์ผ๋ก ์ฌ์ฉํจ. ๋๋๋ก content type ์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ
MIME( Multipurpose Internet Mail Extensions ) type
- ํ์ผ์ ํ์์ ๋ํ๋ด๋ ๋ฌธ์์ด๋ก ํ์ผ๊ณผ ๊ฐ์ด ์ก์ ๋๋๋ฐ content์ ํ์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ
- ์๋์ฐ์ ํ์ผ ํ์ฅ์์ ๋์ผํ ์ญํ
- ์ด๋ฉ์ผ ๋ฉ์ธ์ง , ์ฒจ๋ถํ์ผ ์ข ๋ฅ๋ฅผ ๊ณ ์งํ๊ธฐ ์ํด ์ ์๋์๊ณ ์ด๋ฅผ ๊ทผ๊ฑฐ๋ก MIME ํ์ ์ด๋ผ๋ ์ด๋ฆ์ด ๋ง๋ค์ด์ง
- ์ง๊ธ์ Media Type ์ด๋ผ๋ ์ฉ์ด๋ก ์ฌ์ฉ ๋๋ค.
media type
- ๋ฏธ๋์ด ํ์ ์ ์๋ 1996๋ ์ MIME ์ฌ์์ ์ผ๋ถ์์
- HTTP ๋ HTML ๋ฑ์ ๋ฌธ์ ํ์ผ ํฌ๋งท์ ์ฌ์ฉ๋จ
- ์ธํฐ๋ท ํ ๋น ๋ฒํธ ๊ด๋ฆฌ ๊ธฐ๊ด(IANA)์ ๋ชจ๋ ๊ณต์ MIME ํ์ ์ ๋ด๋นํ๋ฉฐ ๋ฏธ๋์ด ํ์ ์์ ๊ฐ์ฅ ์ต์ ๋ชฉ๋ก ๋ณผ ์ ์์
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง๋ ์์ง๋ง ์ ํต์ ์ผ๋ก ์๋ฌธ์๋ก ์ฐ์ฌ์ง๋๋ค. ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
media type ๊ตฌ์กฐ
- ์ ํ(type), ์ํ(subtype), ๊ทธ๋ฆฌ๊ณ ์ ํ์ ๋งค๊ฐ๋ณ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ง
`text` ์ ํ + `plain` ์ํ => `text/plain` ์ผ๋ฐ ํ ์คํธ ํ์ผ
`text` ์ ํ + `html` ์ํ => `text/html` HTML ๋ฌธ์
`application` ์ ํ + `json` ์ํ => `application/json` JSON ๋ฐ์ดํฐ
ex) HTML `text/html; charset=UTF-8`
`text` ๋ ์ ํ `html` ์ ์ํ `charset=UTF-8` ์ ๋ฌธ์ ์ธ์ฝ๋ฉ = ์ ํ์ ๋งค๊ฐ๋ณ์
media type ํ์
- Discrete(๋จ์ผ ์ฝํ
์ธ )
- ๋จ์ผ ์ฝํ ์ธ ์ ํ์ ๊ฐ์ง ํ์ผ์ด๋ ๋ฐ์ดํฐ์ ๋๋ค.
- ์: ํ ์คํธ, ์ด๋ฏธ์ง, ๋น๋์ค, ์ค๋์ค ๋ฑ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ํ์.
- ์ฃผ์ ์:
- text/plain: ์ผ๋ฐ ํ ์คํธ
- image/png: PNG ์ด๋ฏธ์ง
- application/json: JSON ๋ฐ์ดํฐ
- Multipart(๋ค์ค ์ฝํ
์ธ )
- ์ฌ๋ฌ ๊ฐ์ ์ฝํ ์ธ ๊ฐ ๊ฒฐํฉ๋ ๋ณตํฉ ๋ฐ์ดํฐ ์ ํ์ ๋๋ค.
- ์ด๋ฉ์ผ ์ฒจ๋ถํ์ผ, ํผ ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ํฌํจํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฃผ์ ์:
- multipart/mixed: ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ํฌํจ(์: ์ด๋ฉ์ผ ๋ณธ๋ฌธ๊ณผ ์ฒจ๋ถํ์ผ)
- multipart/form-data: ํ์ผ ์ ๋ก๋ ์ ์ฌ์ฉ(HTML ํผ ๋ฐ์ดํฐ)
- multipart/alternative: ๋์ผํ ์ฝํ ์ธ ๋ฅผ ๋ค์ํ ํ์์ผ๋ก ์ ๊ณต(์: HTML๊ณผ plain ํ ์คํธ ๋ฒ์ )
Content-Type
- HTTP ํ๋กํ ์ฝ์์ ์ฌ์ฉ๋๋ ํค๋ ํ๋๋ก, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ์ ๋ฏธ๋์ด ํ์ ์ ์ง์ ํจ
import axios from 'axios';
function sendText() {
axios.post('/api/text', '<h1>Hello, World!</h1>', {
headers: {
'Content-Type': 'text/html', <<<<< ์๊ฑฐ
},
})
.then((response) => {
console.log('Response:', response.data);
})
.catch((error) => {
console.error('Error:', error);
});
}
MIME ํ์ (Media Type) ์ฃผ์ ์ฌํญ
ex)
CSS ํ์ผ์ด text/plain์ผ๋ก ์ค์ ๋จ | ๋ธ๋ผ์ฐ์ ๊ฐ CSS๋ฅผ ์คํ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ณ ๋จ์ ํ ์คํธ๋ก ๋ ๋๋ง. |
JavaScript ํ์ผ์ด application/json์ผ๋ก ์ค์ ๋จ | ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ง ์๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ JSON ํ์ผ๋ก ์ฒ๋ฆฌํจ. |
์ด๋ฏธ์ง ํ์ผ์ด application/octet-stream์ผ๋ก ์ค์ ๋จ | ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ณด์ฌ์ฃผ๋ ๋์ ํ์ผ ๋ค์ด๋ก๋ ์ฐฝ์ด ๋ธ. |
์๋ชป๋ MIME ํ์ ์ ์ค์ ํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ํ์ผ์ด ์์๋๋ก ๋์ํ์ง ์๊ฒ ๋๋ค !
MIME ํ์ ํ์ธํ๋ ๋ฐฉ๋ฒ
- ๋ธ๋ผ์ฐ์ ์์ F12(๊ฐ๋ฐ์ ๋๊ตฌ) → "Network" ํญ → ์์ฒญ ํ์ผ ์ ํ → "Headers" ์น์ ์์ Content-Type ํ์ธ.
https://datatracker.ietf.org/doc/html/rfc6838
https://ko.wikipedia.org/wiki/%EB%AF%B8%EB%94%94%EC%96%B4_%ED%83%80%EC%9E%85