본문 바로가기
Web Programming Language/PHP

PHP) HTTP Header - MIME-Type, Content-Type

by manchesterandthecity 2021. 1. 14.

content-type이란 

간단히 말해 보내는 자원의 형식을 명시하기 위해 헤더에 실리는 정보이다. 이 값은 표준 mime-type중의 하나이다.

 

MIME-Type, Content-Type이란 무엇인가?

 

우리가 클라이언트 브라우저로 어떤 자원을 보낼때(어떤 형태의 파일이나 문서 등), 웹 서버는 일련의 HTTP 헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부사항을 묘사한다. 예를 들어, 헤더는 사용되고 있는 웹 서버의 소프트웨어의 타입, 서버의 날짜와 시간, HTTP 프로토콜, 사용중인 커넥션 타입등을 지정한다. 헤더는 또한 클라이언트가 이런 가상 패스나 도메인에 대해서 저장해야 할 쿠키를 포함한다.

이와 관련해서 가장 중요한 것은 헤더는 또한 보내지는 자원의 content 타입이 포함되는 것이다. 이것은 Content-Type 헤더에 의해 지정되는데, 이 값은 표준 MIME-Type의 하나이다. MIME-Type을 살펴봄으로써 브라우져는 데이터를 나타내는데 어떤 종류의 파일 Stream인지를 알고 있다. HTML 페이지에 MIME-Type을 가진다.

 

Content-Type의 종류

1) Multipart Related MIME 타입

  - Content-Type: Multipart/related                        <-- 기본형태

  - Content-Type: Application/X-FixedRecord

 

 

2) XML Media의 타입

 - Content-Type: text/xml

 - Content-Type: Application/xml

 - Content-Type: Application/xml-external-parsed-entity

 - Content-Type: Application/xml-dtd

 - Content-Type: Application/mathtml+xml

 - Content-Type: Application/xslt+xml

 

 

3) Application의 타입 

 - Content-Type: Application/EDI-X12                      <--  Defined in RFC 1767 

 - Content-Type: Application/EDIFACT                     <--  Defined in RFC 1767 

 - Content-Type: Application/javascript                 <-- Defined in RFC 4329 

 - Content-Type: Application/octet-stream          <-- 디폴트 미디어 타입은 운영체제 종종 실행파일, 다운로드를 의미

 - Content-Type: Application/ogg                           <-- Defined in RFC 3534

 - Content-Type: Application/x-shockwave-flash         <-- Adobe Flash files

 - Content-Type: Application/json                         <-- JavaScript Object Notation JSON; Defined in RFC 4627 

 - Content-Type: Application/x-www-form-urlencode   <-- HTML Form 형태

 

* x-www-form-urlencode와 multipart/form-data은 둘다 폼 형태이지만 x-www-form-urlencode은 대용량 바이너리 테이터를 전송하기에 비능률적이기 때문에 대부분 첨부파일은 multipart/form-data를 사용하게 된다.

 

 

4) 오디오 타입

- Content-Type: audio/mpeg                                   <-- MP3 or other MPEG audio

- Content-Type: audio/x-ms-wma                             <-- Windows Media Audio;

- Content-Type: audio/vnd.rn-realaudio                     <--  RealAudio;  등등 

 

 

5) Multipart 타입

- Content-Type: multipart/mixed: MIME E-mail; 

- Content-Type: multipart/alternative: MIME E-mail;

- Content-Type: multipart/related: MIME E-mail           <-- Defined in RFC 2387 and used by MHTML(HTML mail) 

- Content-Type: multipart/formed-data                      <-- 파일 첨부

 

 

6) TEXT 타입 

- Content-Type: text/css

- Content-Type: text/html

- Content-Type: text/javascript

- Content-Type: text/plain

- Content-Type: text/xml

 

 

7) file 타입

- Content-Type: application/msword                       <-- doc

- Content-Type: application/pdf                             <-- pdf

- Content-Type: application/vnd.ms-excel                <-- xls

- Content-Type: application/x-javascript                  <-- js

- Content-Type: application/zip                             <-- zip

- Content-Type: image/jpeg                                  <-- jpeg, jpg, jpe

- Content-Type: text/css                                       <-- css

- Content-Type: text/html                                     <-- html, htm

- Content-Type: text/plain                                    <-- txt

- Content-Type: text/xml                                      <-- xml

- Content-Type: text/xsl                                       <-- xsl

 

 

 

 

 

 

++)

Content-Type: Application/octet-stream

  • application/octet-stream는 다른 모든 경우를 위한 기본값입니다. 알려지지 않은 파일 타입은 이 타입을 사용해야 합니다. 브라우저들은 이런 파일들을 다룰 때, 사용자를 위험한 동작으로부터 보호하도록 개별적인 주의를 기울여야 합니다.
  • 이 타입은 이진 파일을 위한 기본값입니다. 이 타입은 실제로 잘 알려지지 않은 이진 파일을 의미하므로, 브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다. Content-Disposition 헤더가 값 attachment와 함게 설정되었고 'Save As' 파일을 제안하는지 여부에 따라 브라우저가 그것을 다루게 됩니다.

사용 예)

파일 다운로드 기능에서는 파일 타입(형식)을 일일이 명시할 수 없기에 임의의 파일 타입 형태인, application/octet-stream으로 설정해준다.

 

 

 



출처 :

https://iamawebdeveloper.tistory.com/88 [나는 웹개발자!]

 

developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

'Web Programming Language > PHP' 카테고리의 다른 글

PHP) readfile() 함수  (0) 2021.01.15
PHP) HTTP Response Header - Content-Disposition 속성  (0) 2021.01.15
PHP) shell_exec() 함수  (0) 2020.11.05
PHP) system() 함수  (0) 2020.11.05
PHP) $SERVER, $_SERVER['PHP_SELF']  (0) 2020.11.05

댓글