MIME 類型


MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標准。

MIME 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據。

按照文件擴展名排列的 Mime 類型列表

擴展名 類型/子類型
  application/octet-stream
323 text/h323
acx application/internet-property-stream
ai application/postscript
aif audio/x-aiff
aifc audio/x-aiff
aiff audio/x-aiff
asf video/x-ms-asf
asr video/x-ms-asf
asx video/x-ms-asf
au audio/basic
avi video/x-msvideo
axs application/olescript
bas text/plain
bcpio application/x-bcpio
bin application/octet-stream
bmp image/bmp
c text/plain
cat application/vnd.ms-pkiseccat
cdf application/x-cdf
cer application/x-x509-ca-cert
class application/octet-stream
clp application/x-msclip
cmx image/x-cmx
cod image/cis-cod
cpio application/x-cpio
crd application/x-mscardfile
crl application/pkix-crl
crt application/x-x509-ca-cert
csh application/x-csh
css text/css
dcr application/x-director
der application/x-x509-ca-cert
dir application/x-director
dll application/x-msdownload
dms application/octet-stream
doc application/msword
dot application/msword
dvi application/x-dvi
dxr application/x-director
eps application/postscript
etx text/x-setext
evy application/envoy
exe application/octet-stream
fif application/fractals
flr x-world/x-vrml
gif image/gif
gtar application/x-gtar
gz application/x-gzip
h text/plain
hdf application/x-hdf
hlp application/winhlp
hqx application/mac-binhex40
hta application/hta
htc text/x-component
htm text/html
html text/html
htt text/webviewhtml
ico image/x-icon
ief image/ief
iii application/x-iphone
ins application/x-internet-signup
isp application/x-internet-signup
jfif image/pipeg
jpe image/jpeg
jpeg image/jpeg
jpg image/jpeg
js application/x-javascript
latex application/x-latex
lha application/octet-stream
lsf video/x-la-asf
lsx video/x-la-asf
lzh application/octet-stream
m13 application/x-msmediaview
m14 application/x-msmediaview
m3u audio/x-mpegurl
man application/x-troff-man
mdb application/x-msaccess
me application/x-troff-me
mht message/rfc822
mhtml message/rfc822
mid audio/mid
mny application/x-msmoney
mov video/quicktime
movie video/x-sgi-movie
mp2 video/mpeg
mp3 audio/mpeg
mpa video/mpeg
mpe video/mpeg
mpeg video/mpeg
mpg video/mpeg
mpp application/vnd.ms-project
mpv2 video/mpeg
ms application/x-troff-ms
mvb application/x-msmediaview
nws message/rfc822
oda application/oda
p10 application/pkcs10
p12 application/x-pkcs12
p7b application/x-pkcs7-certificates
p7c application/x-pkcs7-mime
p7m application/x-pkcs7-mime
p7r application/x-pkcs7-certreqresp
p7s application/x-pkcs7-signature
pbm image/x-portable-bitmap
pdf application/pdf
pfx application/x-pkcs12
pgm image/x-portable-graymap
pko application/ynd.ms-pkipko
pma application/x-perfmon
pmc application/x-perfmon
pml application/x-perfmon
pmr application/x-perfmon
pmw application/x-perfmon
pnm image/x-portable-anymap
pot, application/vnd.ms-powerpoint
ppm image/x-portable-pixmap
pps application/vnd.ms-powerpoint
ppt application/vnd.ms-powerpoint
prf application/pics-rules
ps application/postscript
pub application/x-mspublisher
qt video/quicktime
ra audio/x-pn-realaudio
ram audio/x-pn-realaudio
ras image/x-cmu-raster
rgb image/x-rgb
rmi audio/mid
roff application/x-troff
rtf application/rtf
rtx text/richtext
scd application/x-msschedule
sct text/scriptlet
setpay application/set-payment-initiation
setreg application/set-registration-initiation
sh application/x-sh
shar application/x-shar
sit application/x-stuffit
snd audio/basic
spc application/x-pkcs7-certificates
spl application/futuresplash
src application/x-wais-source
sst application/vnd.ms-pkicertstore
stl application/vnd.ms-pkistl
stm text/html
svg image/svg+xml
sv4cpio application/x-sv4cpio
sv4crc application/x-sv4crc
swf application/x-shockwave-flash
t application/x-troff
tar application/x-tar
tcl application/x-tcl
tex application/x-tex
texi application/x-texinfo
texinfo application/x-texinfo
tgz application/x-compressed
tif image/tiff
tiff image/tiff
tr application/x-troff
trm application/x-msterminal
tsv text/tab-separated-values
txt text/plain
uls text/iuls
ustar application/x-ustar
vcf text/x-vcard
vrml x-world/x-vrml
wav audio/x-wav
wcm application/vnd.ms-works
wdb application/vnd.ms-works
wks application/vnd.ms-works
wmf application/x-msmetafile
wps application/vnd.ms-works
wri application/x-mswrite
wrl x-world/x-vrml
wrz x-world/x-vrml
xaf x-world/x-vrml
xbm image/x-xbitmap
xla application/vnd.ms-excel
xlc application/vnd.ms-excel
xlm application/vnd.ms-excel
xls application/vnd.ms-excel
xlt application/vnd.ms-excel
xlw application/vnd.ms-excel
xof x-world/x-vrml
xpm image/x-xpixmap
xwd image/x-xwindowdump
z application/x-compress
zip application/zip
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

多用途Internet郵件擴展(MIME)類型 是一種標准化的方式來表示文檔的性質和格式。 它在IETF RFC 6838中進行了定義和標准化。互聯網號碼分配機構(IANA)是負責跟蹤所有官方MIME類型的官方機構,您可以在媒體類型頁面中找到最新的完整列表。

瀏覽器通常使用MIME類型(而不是文件擴展名)來確定如何處理文檔;因此服務器設置正確以將正確的MIME類型附加到響應對象的頭部是非常重要的。

語法

通用結構

type/subtype

MIME的組成結構非常簡單;由類型與子類型兩個字符串中間用'/'分隔而組成。並不允許空格存在。type 表示可以被分為復數子類的獨立類型。subtype 表示細分后的每個類型。

MIME類型對大小寫不敏感,但是傳統寫法都是小寫。

獨立類型

text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/octet-stream
…

獨立類型表明了對文件的分類,可以是如下之一:

類型 描述 典型示例
text 表明文件是普通文本,理論上是可讀的語言 text/plain, text/html, text/css, text/javascript
image 表明是某種圖像。不包括視頻,但是動態圖(比如動態gif)也使用image類型 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/xmlapplication/pdf,

application/json

對於text文件類型若沒有特定的subtype,就使用 text/plain。類似的,二進制文件沒有特定或已知的 subtype,即使用 application/octet-stream

Multipart 類型

multipart/form-data
multipart/byteranges

Multipart 類型表示細分領域的文件類型的種類,經常對應不同的 MIME 類型。這是復合文件的一種表現方式。對於 multipart/form-data 的例外部分,可以使用HTML FormsPOST 方法,此外 multipart/byteranges使用狀態碼206 Partial Content來發送整個文件的子集,而HTTP不能處理的復合文件使用一個特殊的方式:將信息直接傳送給瀏覽器(這時可能會建立一個“另存為”窗口,但是卻不知道如何去顯示內聯文件。)

重要的MIME類型

application/octet-stream

這是應用程序文件的默認值。意思是 未知的應用程序文件 ,瀏覽器一般不會自動執行或詢問執行。瀏覽器會像對待 設置了HTTP頭Content-Disposition 值為“附件”的文件一樣來對待這類文件。

text/plain

文本文件默認值。意思是 未知的文本文件 ,瀏覽器認為是可以直接展示的。

text/plain並不是意味着某種文本數據。如果瀏覽器想要一個文本文件的明確類型,瀏覽器並不會考慮他們是否匹配。比如說,如果通過一個表明是下載CSS文件的<link>鏈接下載了一個 text/plain 文件。如果提供的信息是text/plain,瀏覽器並不會認出這是有效的CSS文件。CSS類型需要使用text/css。

text/css

任何一個CSS文件想要在網頁上被解釋執行就必須為text/css 文件。但是服務器經常不會分辨出使用.css后綴的CSS文件,並且將其MIME類型設置為text/plainapplication/octet-stream 發送:在這種情況下,文件並不能被瀏覽器識別為CSS文件並且會被直接忽略。所以特別注意要給CSS文件設置正確的類型。

text/html

所有的HTML內容都應該使用這種類型。XHTML的其他MIME類型(如application/xml+html)現在基本不再使用(HTML5統一了這些格式)。

圖片類型

圖片類型是在網頁中使用的,唯一被廣泛識別以及考慮過web安全的類型:

MIME 類型 圖片類型
image/gif GIF 圖片 (無損耗壓縮方面被PNG所替代)
image/jpeg JPEG 圖片
image/png PNG 圖片
image/svg+xml SVG圖片 (矢量圖)

此處的類型划分有一定的爭議,有人認為此處應該增加 WebP(image/webp),但是每個新增的圖片類型都會增加代碼的數量,這會帶來一些新的安全問題,所以瀏覽器供應商對於添加類型非常小心。

另外的一些圖片種類可以在Web文檔中找到。比如很多瀏覽器支持 icon 類型的圖標作為 favicons或者類似的圖標,並且瀏覽器在MIME類型中的 image/x-icon 支持ICO圖像。

音頻與視頻類型

HTML並沒有明確定義被用於<audio><video>元素所支持的文件類型,所以在web上使用的只有相對較小的一組類型。  Media formats supported by the HTML audio and video elements 這篇文章解釋了可以被使用的解碼器或視頻文件格式。

在web環境最常用的視頻文件的格式,是以下這些這些文件類型:

MIME 類型 音頻或視頻類型
audio/wave
audio/wav
audio/x-wav
audio/x-pn-wav
音頻流媒體文件。一般支持PCM音頻編碼,其他解碼器有限支持(如果有的話)。
audio/webm WebM 音頻文件格式。Vorbis 和 Opus 是其最常用的解碼器。
video/webm 采用WebM視頻文件格式的音視頻文件。VP8 和 VP9是其最常用的視頻解碼器。Vorbis 和 Opus 是其最常用的音頻解碼器。
audio/ogg 采用OGG多媒體文件格式的音頻文件。 Vorbis 是這個多媒體文件格式最常用的音頻解碼器。
video/ogg 采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為Vorbis 。
application/ogg 采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為Vorbis 。
application/json application/json (MIME_type)
https://en.wikipedia.org/wiki/Media_type#Common_examples
https://www.iana.org/assignments/media-types/application/json

multipart/form-data

multipart/form-data 可用於HTML表單從瀏覽器發送信息給服務器。作為多部分文檔格式,它由邊界線(一個由'--'開始的字符串)划分出的不同部分組成。每一部分有自己的實體,以及自己的 HTTP 請求頭,Content-DispositionContent-Type 用於文件上傳領域,最常用的 (Content-Length 因為邊界線作為分隔符而被忽略)。

Content-Type: multipart/form-data; boundary=aBoundaryString
(other headers associated with the multipart document as a whole)

--aBoundaryString
Content-Disposition: form-data; name="myFile"; filename="img.jpg"
Content-Type: image/jpeg

(data)
--aBoundaryString
Content-Disposition: form-data; name="myField"

(data)
--aBoundaryString
(more subparts)
--aBoundaryString--

如下所示的表單:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data"> <input type="text" name="myTextField"> <input type="checkbox" name="myCheckBox">Check</input> <input type="file" name="myFile"> <button>Send the file</button> </form>

會發送這樣的請求:

POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

multipart/byteranges

multipart/byteranges 用於把部分的響應報文發送回瀏覽器。當發送狀態碼206Partial Content時,這個MIME類型用於指出這個文件由若干部分組成,每一個都有其請求范圍。就像其他很多類型Content-Type使用分隔符來制定分界線。每一個不同的部分都有Content-Type這樣的HTTP頭來說明文件的實際類型,以及 Content-Range來說明其范圍。

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5
Content-Length: 385

--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 100-200/1270

eta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="vieport" content
--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 300-400/1270

-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica
--3d6b6a416f9b5--

設置正確的MIME類型的重要性

很多web服務器使用默認的 application/octet-stream 來發送未知類型。出於一些安全原因,對於這些資源瀏覽器不允許設置一些自定義默認操作,導致用戶必須存儲到本地以使用。常見的導致服務器配置錯誤的文件類型如下所示:

  • RAR編碼文件。在這種情況,理想狀態是,設置真實的編碼文件類型;但這通常不可能(可能是服務器所未知的類型或者這個文件包含許多其他的不同的文件類型)。這這種情況服務器將發送 application/x-rar-compressed 作為MIME類型,用戶不會將其定義為有用的默認操作。

  • 音頻或視頻文件。只有正確設置了MIME類型的文件才能被 <video><audio> 識別和播放。 可參照  use the correct type for audio and video

  • 專有文件類型。是專有文件時需要特別注意。使用 application/octet-stream 作為特殊處理是不被允許的:對於一般的MIME類型瀏覽器不允許定義默認行為(比如“在Word中打開”)

MIME 嗅探

在缺失 MIME 類型或客戶端認為文件設置了錯誤的 MIME 類型時,瀏覽器可能會通過查看資源來進行MIME嗅探。每一個瀏覽器在不同的情況下會執行不同的操作。因為這個操作會有一些安全問題,有的 MIME 類型表示可執行內容而有些是不可執行內容。瀏覽器可以通過請求頭 Content-Type 來設置 X-Content-Type-Options 以阻止MIME嗅探。

其他傳送文件類型的方法

MIME類型不是傳達文檔類型信息的唯一方式:

  • 有時會使用名稱后綴,特別是在Microsoft Windows系統上。並非所有的操作系統都認為這些后綴是有意義的(特別是Linux和Mac OS),並且像外部MIME類型一樣,不能保證它們是正確的。
  • 魔術數字。不同類型的文件的語法通過查看結構來允許文件類型推斷。例如,每個GIF文件以47 49 46 38十六進制值[GIF89]或89 50 4E 47 [.PNG]的PNG文件開頭。 並非所有類型的文件都有幻數,所以這也不是100%可靠的方式。

其他


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM