用途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/* application/json application/javascript application/ecmascript application/octet-stream …
獨立類型表明了對文件的分類,可以是如下之一:
類型描述典型示例text表明文件是普通文本,理論上是人類可讀text/plain, text/html, text/css,text/javascriptimage表明是某種圖像。不包括視頻,但是動態圖(比如動態gif)也使用image類型image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.iconaudio表明是某種音頻文件audio/midi, audio/mpeg,audio/webm,audio/ogg,audio/wavvideo表明是某種視頻文件video/webm, video/oggapplication表明是某種二進制數據application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf
對于text文件類型若沒有特定的subtype,就使用 text/plain。類似的,二進制文件沒有特定或已知的 subtype,即使用 application/octet-stream。
multipart/form-data multipart/byteranges
Multipart 類型表示細分領域的文件類型的種類,經常對應不同的 MIME 類型。這是復合文件的一種表現方式。 multipart/form-data 可用于聯系 HTMLForms和 POST方法,此外 multipart/byteranges使用狀態碼 206 PartialContent來發送整個文件的子集,而HTTP對不能處理的復合文件使用特殊的方式:將信息直接傳送給瀏覽器(這時可能會建立一個“另存為”窗口,但是卻不知道如何去顯示內聯文件。)
Note: You still need to use application/xml or application/xhtml+xml if you intend to make use of XML’s strict parsing rules, use [<![CDATA[…]]>] or elements from non?HTML, non?SVG or non?MathML XML namespaces, as text/html’s parsing semantics are subtly incompatible with those of application/xml.
所有的 text JavaScript 類型已經被 RFC 4329 廢棄。
只有一小部分圖片類型是被廣泛支持的,Web安全的,可隨時在Web頁面中使用的:
MIME 類型圖片類型image/gifGIF 圖片 (無損耗壓縮方面被PNG所替代)image/jpegJPEG 圖片image/pngPNG 圖片image/svg+xmlSVG圖片 (矢量圖)
此處的類型劃分有一定的爭議,有人認為此處應該增加 WebP( image/webp),但是每個新增的圖片類型都會增加代碼的數量,這會帶來一些新的安全問題,所以瀏覽器供應商對于添加類型非常小心。
另外的一些圖片種類可以在Web文檔中找到。比如很多瀏覽器支持 icon 類型的圖標作為 favicons或者類似的圖標,并且瀏覽器在MIME類型中的 image/x-icon 支持ICO圖像
盡管 image/vnd.microsoft.icon 在ANA注冊, 它仍然不被廣泛支持, image/x-icon 被作為替代品使用。
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音頻編碼 (WAVE codec "1") ,其他解碼器有限支持(如果有的話)。audio/webmWebM 音頻文件格式。Vorbis 和 Opus 是其最常用的解碼器。video/webm采用WebM視頻文件格式的音視頻文件。VP8 和 VP9是其最常用的視頻解碼器。Vorbis 和 Opus 是其最常用的音頻解碼器。audio/ogg采用OGG多媒體文件格式的音頻文件。 Vorbis 是這個多媒體文件格式最常用的音頻解碼器。video/ogg采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為Vorbis 。application/ogg采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是 Theora;音頻解碼器為Vorbis 。application/jsonapplication/json (MIMEtype)
https://en.wikipedia.org/wiki/Mediatype#Common_examples
https://www.iana.org/assignments/media-types/application/json
multipart/form-data 可用于 HTML表單從瀏覽器發送信息給服務器。作為多部分文檔格式,它由邊界線(一個由 '--'開始的字符串)劃分出的不同部分組成。每一部分有自己的實體,以及自己的 HTTP 請求頭, Content-Disposition和 Content-Type用于文件上傳領域,最常用的 ( Content-Length因為邊界線作為分隔符而被忽略)。
Content-Type: multipart/form-data; boundary=aBoundaryString(other headers associated with the multipart document as a whole)--aBoundaryStringContent-Disposition: form-data; name="myFile"; filename="img.jpg"Content-Type: image/jpeg(data)--aBoundaryStringContent-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.1Host: localhost:8000User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveUpgrade-Insecure-Requests: 1Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498Content-Length: 465-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="myTextField"Test-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="myCheckBox"on-----------------------------8721656041911415653955004498Content-Disposition: form-data; name="myFile"; filename="test.txt"Content-Type: text/plainSimple file.-----------------------------8721656041911415653955004498--
multipart/byteranges 用于把部分的響應報文發送回瀏覽器。當發送狀態碼 206 PartialContent 時,這個MIME類型用于指出這個文件由若干部分組成,每一個都有其請求范圍。就像其他很多類型 Content-Type使用分隔符來制定分界線。每一個不同的部分都有 Content-Type這樣的HTTP頭來說明文件的實際類型,以及 Content-Range來說明其范圍。
HTTP/1.1 206 Partial ContentAccept-Ranges: bytesContent-Type: multipart/byteranges; boundary=3d6b6a416f9b5Content-Length: 385--3d6b6a416f9b5Content-Type: text/htmlContent-Range: bytes 100-200/1270eta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="vieport" content--3d6b6a416f9b5Content-Type: text/htmlContent-Range: bytes 300-400/1270-color: #f0f0f2; margin: 0; padding: 0; font-family: "Open Sans", "Helvetica--3d6b6a416f9b5--
很多web服務器使用默認的 application/octet-stream 來發送未知類型。出于一些安全原因,對于這些資源瀏覽器不允許設置一些自定義默認操作,導致用戶必須存儲到本地以使用。常見的導致服務器配置錯誤的文件類型如下所示:
在缺失 MIME 類型或客戶端認為文件設置了錯誤的 MIME 類型時,瀏覽器可能會通過查看資源來進行MIME嗅探。每一個瀏覽器在不同的情況下會執行不同的操作。因為這個操作會有一些安全問題,有的 MIME 類型表示可執行內容而有些是不可執行內容。瀏覽器可以通過請求頭 Content-Type來設置 X-Content-Type-Options以阻止MIME嗅探。
MIME類型不是傳達文檔類型信息的唯一方式:
歡迎關注 “后端老鳥” 公眾號,接下來會發一系列的專題文章,包括Java、Python、Linux、SpringBoot、SpringCloud、Dubbo、算法、技術團隊的管理等,還有各種腦圖和學習資料,NFC技術、搜索技術、爬蟲技術、推薦技術、音視頻互動直播等,只要有時間我就會整理分享,敬請期待,現成的筆記、腦圖和學習資料如果大家有需求也可以公眾號留言提前獲取。由于本人在所有團隊中基本都處于攻堅和探路的角色,搞過的東西多,遇到的坑多,解決的問題也很多,歡迎大家加公眾號進群一起交流學習。
文件擴展名 | MIME類型 |
.flv | application/octet-stream |
.f4v | application/octet-stream |
.mp4 | video/mp4 |
.gho | application/octet-stream |
.iso | application/octet-stream |
.woff | application/x-font-woff |
詳細資料如下:
擴展名 | 文檔類型 | MIME 類型 |
.aac | AAC audio | audio/aac |
.abw | AbiWord document | application/x-abiword |
.arc | Archive document (multiple files embedded) | application/x-freearc |
.avi | AVI: Audio Video Interleave | video/x-msvideo |
.azw | Amazon Kindle eBook format | application/vnd.amazon.ebook |
.bin | Any kind of binary data | application/octet-stream |
.bmp | Windows OS/2 Bitmap Graphics | image/bmp |
.bz | BZip archive | application/x-bzip |
.bz2 | BZip2 archive | application/x-bzip2 |
.csh | C-Shell script | application/x-csh |
.css | Cascading Style Sheets (CSS) | text/css |
.csv | Comma-separated values (CSV) | text/csv |
.doc | Microsoft Word | application/msword |
.docx | Microsoft Word (OpenXML) | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.eot | MS Embedded OpenType fonts | application/vnd.ms-fontobject |
.epub | Electronic publication (EPUB) | application/epub+zip |
.gif | Graphics Interchange Format (GIF) | image/gif |
.htm.html | HyperText Markup Language (HTML) | text/html |
.ico | Icon format | image/vnd.microsoft.icon |
.ics | iCalendar format | text/calendar |
.jar | Java Archive (JAR) | application/java-archive |
.jpeg .jpg | JPEG images | image/jpeg |
.js | JavaScript | text/javascript |
.json | JSON format | application/json |
.jsonld | JSON-LD format | application/ld+json |
.mid .midi | Musical Instrument Digital Interface (MIDI) | audio/midi audio/x-midi |
.mjs | JavaScript module | text/javascript |
.mp3 | MP3 audio | audio/mpeg |
.mpeg | MPEG Video | video/mpeg |
.mpkg | Apple Installer Package | application/vnd.apple.installer+xml |
.odp | OpenDocument presentation document | application/vnd.oasis.opendocument.presentation |
.ods | OpenDocument spreadsheet document | application/vnd.oasis.opendocument.spreadsheet |
.odt | OpenDocument text document | application/vnd.oasis.opendocument.text |
.oga | OGG audio | audio/ogg |
.ogv | OGG video | video/ogg |
.ogx | OGG | application/ogg |
.otf | OpenType font | font/otf |
.png | Portable Network Graphics | image/png |
Adobe Portable Document Format (PDF) | application/pdf | |
.ppt | Microsoft PowerPoint | application/vnd.ms-powerpoint |
.pptx | Microsoft PowerPoint (OpenXML) | application/vnd.openxmlformats-officedocument.presentationml.presentation |
.rar | RAR archive | application/x-rar-compressed |
.rtf | Rich Text Format (RTF) | application/rtf |
.sh | Bourne shell script | application/x-sh |
.svg | Scalable Vector Graphics (SVG) | image/svg+xml |
.swf | Small web format (SWF) or Adobe Flash document | application/x-shockwave-flash |
.tar | Tape Archive (TAR) | application/x-tar |
.tif.tiff | Tagged Image File Format (TIFF) | image/tiff |
.ttf | TrueType Font | font/ttf |
.txt | Text, (generally ASCII or ISO 8859-n) | text/plain |
.vsd | Microsoft Visio | application/vnd.visio |
.wav | Waveform Audio Format | audio/wav |
.weba | WEBM audio | audio/webm |
.webm | WEBM video | video/webm |
.webp | WEBP image | image/webp |
.woff | Web Open Font Format (WOFF) | font/woff |
.woff2 | Web Open Font Format (WOFF) | font/woff2 |
.xhtml | XHTML | application/xhtml+xml |
.xls | Microsoft Excel | application/vnd.ms-excel |
.xlsx | Microsoft Excel (OpenXML) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml | XML | application/xml 代碼對普通用戶來說不可讀 (RFC 3023, section 3) text/xml 代碼對普通用戶來說可讀 (RFC 3023, section 3) |
.xul | XUL | application/vnd.mozilla.xul+xml |
.zip | ZIP archive | application/zip |
.3gp | 3GPP audio/video container | video/3gpp audio/3gpp(若不含視頻) |
.3g2 | 3GPP2 audio/video container | video/3gpp2 audio/3gpp2(若不含視頻) |
.7z | 7-zip archive | application/x-7z-compressed |