MIME-TYPE & Content-TYPE

뉴트리아개발자·2022년 8월 2일
0

MIME & Content Type

목록 보기
1/1

MIME

Multipurpose Internet Mail Extensions의 약자로 초기 MIME은 용어 그대로의 
의미로써 이메일을 보낼 때 함께 보내지는 첨부파일을 텍스트 문서로 변환(인코딩)해서 
전송하기 위해 개발 되었다.

현재 HTTP 프로토콜을 이용한 웹에서 서버가 클라이언트에게 보내준 문서의 종류들을 
정의한 걸로 사용되고 있다.

일반적인 구조

type/subtype
  • MIME 타입의 구조는 '/'로 구분된 두 개의 문자열인 타입과 서브타입으로 구성된다.
    (스페이스 허용x)

  • Type은 카테고리를 나타내며 개별 혹은 멀티파트 타입이 될 수 있다.
    (SubType은 각각의 타입에 한정된다)

  • MIME 타입은 대소문자를 구분하지 않지만 전통적으로 소문자로 쓰여진다.

Content-Type

HTTP 헤더에는 메시지 전송시에 사용되는 여러가지 정보들이 표시되어 있는데
이 여러 정보들 중에 하나로 Content-Type이 있다.

개별 타입

타입설 명일반적인 서브타입 예시
text텍스트를 포함하는 모든 문서를 나타내며, 이론상으로는 인간이 읽을 수 있어야 한다.text/plain, text/html, text/css, text/javascript
img모든 종류의 이미지를 나타내고 애니메이션되는 이미지가 이미지 타입에 포함되긴 하지만, 비디오는 포함ximage/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모든 종류의 이진 데이터를 나타낸다.applcation/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

multipart 타입

multipart/alternative
multipart/byteranges
multipart/digest
multipart/form-data
multipart/mixed
multipart/parallel
multipart/related
multipart/report
multipart/signed
multipart/encrypted

multipart Type을 통해 MIME은 트리 구조의 메세지 형식을 정의할 수 있다.

  • 서로 붙어있는 여러 개의 메세지를 포함하여 하나의 복합 메세지로 나타낸다.
  • MIME multipart 메세지는 "Content-type" 헤더에 boundary 파라미터를 포함한다.
  • boundary는 메세지 파트를 구분하는 역할을 하며, 메세지의 시작과 끝 부분도 나타난다.
  • 첫번째 boundary 전에 나오는 MIME을 지원하지 않는 클라이언트를 위해 제공한다.
  • boundary를 선택하는 것은 클라이언트의 몫. 보통 무작위의 문자를 선택해 메세지의 본문과 충돌을 피한다.

주로 사용하는 Type

  • multipart/form-data
    이 방식은 form 요소가 파일이나 이미지를 서버로 전송할 때 주로 사용한다.
    일반적인 form의 submit에 의한 데이터들의 Content-type은 application/x-www-form-urlencoded 이다.
    그런데 파일 업로드시 자신이 찍은 사진을 올리는 form의 경우, 사진에 대한 설명을 위한 input과 사진 파일을 위한 input 2개가 들어간다.
    하나는 Content-type이 applcation/x-www-form-urlencoded가 될 것이고 사진 파일은 image/jpeg가 될 것이다. 한 body에서 이 2 종류의 데이터를
    구분에서 넣어주는 방법이 필요해짐에 따라 multipart Type이 등장한것이다.

  • application/octet-stream
    이진 파일의 기본 타입으로 브라우저에서 보통 자동으로 실행하지 않거나 실행해야 할지 묻는다.
    Conten-Disposition값이 attachement와 함께 설정되면 브라우저는 파일을 저장 또는 다른이름으로 저장 여부를 체크한다.

  • text/plain
    테스트 파일의 기본 타입

  • image/png, image/Jpeg, image/gif, image/webp
    브라우저는 해당 컨텐트를 이미지로 취급한다.

  • text/javascript
    브라우저는 해당 컨텐트를 Javascript 문서로 취급한다.

profile
기억은 미친짓이다.

0개의 댓글