MIME 类型

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 javascript

MIME 消息能包含文本、图像、音频、视频以及其余应用程序专用的数据。 css

按照文件扩展名排列的 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类型的官方机构,您能够在媒体类型页面中找到最新的完整列表。html

浏览器一般使用MIME类型(而不是文件扩展名)来肯定如何处理文档;所以服务器设置正确以将正确的MIME类型附加到响应对象的头部是很是重要的。java

语法

通用结构

type/subtype

MIME的组成结构很是简单;由类型与子类型两个字符串中间用'/'分隔而组成。并不容许空格存在。type 表示能够被分为复数子类的独立类型。subtype 表示细分后的每一个类型。web

MIME类型对大小写不敏感,可是传统写法都是小写。json

独立类型

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-streamapp

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%可靠的方式。

其余

相关文章
相关标签/搜索