MIME-TYPE

박현·2023년 6월 25일
0

MIME-TYPE

Multipurpose Internet Mail Extensions의 약자로 파일 변환을 의미한다. 현재는 웹을 통해 여러 형태의 파일을 전달하는데 사용하고 있고 문서, 파일 또는 바이트 모음의 특성과 형식을 나타낸다.

브라우저는 파일 확장자가 아닌 MIME TYPE을 사용하여 URL 처리 방법을 결정하므로 응답 Content-Type헤더에 올바른 MIME TYPE을 보내는 것이 중요하다. 올바르게 구성하지 않으면 브라우저가 파일 내용을 잘못 해석해 사이트가 제대로 작동하지 않으며 다운로드한 파일이 잘못 처리될 수 있다.

사용하는 이유

옛날 전자우편은 ASCII파일 전송만 가능했다.하지만 바이너리 파일(음악,동영상 등) 전송이 필요해졌고 이를 전자우편으로 전송하기 위해 개발되었다.
현재는 이메일 뿐만 아니라 웹을 통해 HTTP 통신에서 전달되는 다양한 형태의 데이터를 표현하기 위해 사용되고 있다.브라우저는 리소스를 내려받았을 때, 해야할 기본동작을 MIME TYPE을 기반으로 결정한다.

사용하는 방법

MIME으로 인코딩 한 파일은 데이터의 종류를 알려주는 Content-Type 정보를 파일 앞부분에 담는다.
브라우저의 경우 응답/요청시 HTTP 메시지의 헤더에 정보를 담아서 보내게 되는데 이 헤더에 Content-Type 정보를 담아서 어떤 데이터 종류인지 알려준다.

구조

MIME TYPE은 가장 일반적으로 슬래시(/)로 구분된 type(유형)과 subtype(하위 유형)의 두 부분으로 구성되어있다.

type/subtype
type은 데이터 유형이 속하는 일반 범주를 나타낸다. 크게 개별 혹은 멀티타입 으로 나눌 수 있다.	
ex) text, video, image, audio, application

subtype은 MIME Type이 나타내는 정확한 데이터 종류를 식별한다.
ex) 1. 개별 : plain, html, ics
    2. 멀티타입 : multipart/form-data(보통 서버로 데이터 보낼때 사용), 
    			multipart/byteranges

각 type에는 고유한 subtype세트가 있다. MIME Type은 항상 type과 subtype이 모두 존재한다.

추가 세부 정보를 제공하기 위해 선택적 매개 변수를 추가할 수 있다.

type/subtype;parameter=value

text/plain;charset=UTF-8

MIME TYPE은 대소문자를 구분하지 않지만 대부분 소문자로 작성한다. 하지만 매개변수 값은 대소문자를 구분한다.

TYPE별 정리

text

: 특정 문자셋으로 구성된 텍스트 정보나 포스트스크립트 같은 formatted text 정보 전송에 사용된다.
ex) text/plain, text/html, text/css, text/javascript

multipart

: 모든 종류의 이미지를 나타내며, 비디오는 포함되지 않는다.
ex) audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

audio

: 모든 종류의 오디오 파일을 전송한다.
ex) audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

video

: 모든 종류의 비디오 파일을 전송한다.
ex) video/webm, video/ogg

application

: 모든 이진 데이터(바이너리 데이터)를 전송합니다.
ex) application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

multipart/form-data

: multipart/form-data는 브라우저에서 서버로 HTML Form의 내용을 전송 시 사용한다. 멀티 파트 문서 형식으로써, 경계로 구분되어지는 다른 파트들로 구성되어있다.

multipart/byteranges

: multipart/byteranges 는 브라우저로 회신하는 부분적인 응답 전송의 context 내에서 사용된다. 다른 multipart Type처럼, Content-Type은 경계선 문자열을 정의하기 위해 boundary 디렉티브를 사용한다.

0개의 댓글