본문 바로가기
IT/IT 지식

MIME 타입과 Content Type 이란

by SidePower 2021. 8. 6.

 

HTTP를 이용해서 뭔가를 하려면

꼭 빠지지 않고 나오는 게 MIMEContent-type입니다.

 

한번은 꼭 짚고 넘어가야 될거 같아 정리해 보았습니다.

MIME

Multipurpose Internet Mail Extensions의 약자이며

처음 MIME는 용어 그대로의 의미로써

이메일을 보낼 때 함께 보내지는 첨부파일을

텍스트 문서로 변환해서 전송하기 위해 개발되었습니다.

 

현재는 HTTP 프로토콜을 이용한 웹에서

서버가 클라이언트에게 보내준 문서의 종류들을 정의한 걸로 사용되고 있습니다.

 

Content-Type

HTTP 해더에는 메시지 전송시에 사용되는 여러가지 정보들이 표시되어 있습니다.

여러 정보들 중에 하나로 Content-Type이 있습니다.

 

 

Date라는 항목은 메시지가 생성되는 시간이 표시되어 있고

Date: Wed, 04 Aug 2021 11:17:17 GMT

Content-Length라는 항목은 메시지를 Byte 단위로 표시됩니다.

Content-Length: 23770

 

Content-Type은 MIME 타입으로 변환된 문서의 종류를 알리는 항목입니다.

Content-Type: text/html; charset=utf-8

 

 

웹브라우저 크롬을 이용해서 F12(개발자 도구)로 HTTP 해더에 대한

자세한 정보들을 볼 수 있습니다.

 

예를 들어 저의 티스토리를 F12로 확인해 봤습니다.

오른쪽 아래 Content-Type : text/html 로 표시된 걸 볼 수 있죠.

 

 

HTTP에서 MIME와 Content-Type 중요할까요?

 

http.xls 파일이 있습니다. 

이 파일의 확장자 xls만 보더라도 엑셀파일이란 걸 알 수 있죠.

파일을 더블 클릭하면 자동으로 엑셀이 실행되고

파일 내용이 엑셀 문서로 보이게 될 거예요.

 

하지만 HTTP 웹에서는 확장자라는 건 없습니다. 

클라이언트 웹브라우저는

웹서버로부터 여러 가지 리소스(문서나 파일, 메시지 등..)를 응답받았을 때

이 리소스가 뭔지 해석할 수가 없어 어떤 동작을 해야 될지 결정할 수가 없습니다.

 

이를 해결하기 위해 웹서버는

HTTP 응답 해더에 Content-Type 항목을 두고

이 리소스가 MIME 타입 중에 어떤 타입인지 기록해서 보내고

웹브라우저는 각각의 리소스에 기록된 Content-Type 항목을 체크해서

타입에 맞는 기본 동작을 수행하고 웹브라우저에 표시하게 됩니다.

 

Content-Type는 웹 리소스의 확장자 역할을 합니다.

 

문법

예) Content-Type: text/html; charset=utf-8
text/html → Type/subType 의미
charset → 메시지 문자 인코딩 . utf-8

 

 

 

웹에서 주고 받을수 있는 리소스의 종류가 다양합니다.

너무 많아서 크게 5가지로 분류(Type)하고 세부적(subType)으로 나눴습니다.

Type

타입 설명 예시
text  텍스트를 포함하는 모든 문서를 나타내며 이론상으로는 인간이 읽을 수 있어야 합니다  text/plain
 text/html
 text/css
 text/javascript
image  모든 종류의 이미지를 나타냅니다. (animated gif처럼) 애니메이션되는 이미지가 이미지 타입에 포함되긴 하지만, 비디오는 포함되지 않습니다.  image/gif
 image/png
 image/jpeg
 image/bmp
 image/webp
audio  모든 종류의 오디오 파일들을 나타냅니다.  audio/midi
 audio/mpeg
 audio/webm
 audio/ogg
 audio/wav
video  모든 종류의 비디오 파일들을 나타냅니다.  video/webm
 video/ogg
application  모든 종류의 이진 데이터를 나타냅니다.  application/octet-stream
 application/pkcs12
 application/vnd.mspowerpoint
 application/xhtml+xml
 application/xml
 application/pdf

 

 subType ...

일반적인 파일종류와 MIME 타입 매핑

파일 확장자 파일 설명 MIME 타입
.aac  AAC 오디오  audio/aac
.abw  아비워드 문서  application/x-abiword
.arc  문서 보관(여러 파일 포함)  application/x-freearc
.avi  AVI: 오디오 비디오 인터리브  video/x-msvideo
.azw  아마존 킨들 전자책 형식  application/vnd.amazon.ebook
.bin  모든 종류의 바이너리 데이터  application/octet-stream
.bmp  Windows OS/2 비트맵 그래픽  image/bmp
.bz  BZip 아카이브  application/x-bzip
.bz2  BZip2 아카이브  application/x-bzip2
.cda  CD 오디오  application/x-cdf
.csh  C-쉘 스크립트  application/x-csh
.css  CSS(Cascading Style Sheet)  text/css
.csv  쉼표로 구분된 값(CSV)  text/csv
.doc  마이크로 소프트 워드  application/msword
.docx  마이크로소프트 워드(OpenXML)  application/vnd.openxmlformats-officedocument.wordprocessingml.document
.eot  MS Embedded OpenType 글꼴  application/vnd.ms-fontobject
.epub  전자 출판(EPUB)  application/epub+zip
.gz  GZip 압축 아카이브  application/gzip
.gif  그래픽 교환 형식(GIF)  image/gif
.htm
.html
 하이퍼텍스트 마크업 언어(HTML)  text/html
.ico  아이콘 형식  image/vnd.microsoft.icon
.ics  iCalendar 형식  text/calendar
.jar  자바 아카이브(JAR)  application/java-archive
.jpeg
.jpg
 JPEG 이미지  image/jpeg
.js  자바스크립트  text/javascript
.json  JSON 형식  application/json
.jsonld  JSON-LD 형식  application/ld+json
.mid
.midi
 악기 디지털 인터페이스(MIDI)  audio/midi
 audio/x-midi
.mjs  자바스크립트 모듈  text/javascript
.mp3  MP3 오디오  audio/mpeg
.mp4  MP4 오디오  video/mp4
.mpeg  MPEG 비디오  video/mpeg
.mpkg  Apple 설치 프로그램 패키지  application/vnd.apple.installer+xml
.odp  OpenDocument 프레젠테이션 문서  application/vnd.oasis.opendocument.presentation
.ods  OpenDocument 스프레드시트 문서  application/vnd.oasis.opendocument.spreadsheet
.odt  OpenDocument 텍스트 문서  application/vnd.oasis.opendocument.text
.oga  OGG 오디오  audio/ogg
.ogv  OGG 비디오  video/ogg
.ogx  OGG  application/ogg
.opus  오푸스 오디오  audio/opus
.otf  오픈타입 글꼴  font/otf
.png  휴대용 네트워크 그래픽  image/png
.pdf  어도비 벽돌 휴대용 문서 형식 (PDF)  application/pdf
.php  하이퍼텍스트 전처리기( 개인 홈 페이지 )  application/x-httpd-php
.ppt  마이크로 소프트 파워 포인트  application/vnd.ms-powerpoint
.pptx  마이크로소프트 파워포인트(OpenXML)  application/vnd.openxmlformats-officedocument.presentationml.presentation
.rar  RAR 아카이브  application/vnd.rar
.rtf  서식 있는 텍스트 형식(RTF)  application/rtf
.sh  Bourne 쉘 스크립트  application/x-sh
.svg  확장 가능한 벡터 그래픽(SVG)  image/svg+xml
.swf  작은 웹 형식 (SWF) 또는 Adobe Flash 문서  application/x-shockwave-flash
.tar  테이프 아카이브(TAR)  application/x-tar
.tif
.tiff
 태그가 지정된 이미지 파일 형식(TIFF)  image/tiff
.ts  MPEG 전송 스트림  video/mp2t
.ttf  트루타입 글꼴  font/ttf
.txt  텍스트(일반적으로 ASCII 또는 ISO 8859-n)  text/plain
.vsd  마이크로소프트 비지오  application/vnd.visio
.wav  파형 오디오 형식  audio/wav
.weba  웹엠오디오  audio/webm
.webm  웹엠 비디오  video/webm
.webp  웹페이지 이미지  image/webp
.woff  웹 오픈 글꼴 형식(WOFF)  font/woff
.woff2  웹 오픈 글꼴 형식(WOFF)  font/woff2
.xhtml  XHTML  application/xhtml+xml
.xls  마이크로 소프트 엑셀  application/vnd.ms-excel
.xlsx  마이크로소프트 엑셀(OpenXML)  application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml  XML  application/xml
 text/xml
.xul  XUL  application/vnd.mozilla.xul+xml
.zip  ZIP 아카이브  application/zip
.3gp  3GPP 오디오/비디오 컨테이너  video/3gpp
 audio/3gpp
.3g2  3GPP2 오디오/비디오 컨테이너  video/3gpp2
 audio/3gpp2
.7z  7-zip 보관소  application/x-7z-compressed

 

만약에 MIME 타입에 없는 타입을 사용하게 된다면

웹브라우저는 기본 동작을 허용하지 않게 되고

강제로 파일로 저장하게 하는 액션을 취하게 됩니다.

 

그리고

서브타입은 없는 텍스트 타입을 사용할 때는 text/plain를 사용하고

알려진 MIME 타입을 없을 경우에는

이진 문서로 인식하게 application/octet-stream를 사용해야 됩니다.

 

 

MIME 타입 출처 : MDN Web DOCS 참고

 

Common MIME types - HTTP | MDN

Here is a list of MIME types, associated by type of documents, ordered by their common extensions.

developer.mozilla.org

 

 

감사합니다.

반응형

댓글