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

    其他

  • 相关阅读:
    Java中的事务
    ABCDE
    Android 防内存泄露handler
    自建应用新花样,菜鸟也会做应用
    软件測试之独步武林系列(一)
    刚在在win8.1下装了ubuntu12.04
    SVN 的一些操作
    [华为机试练习题]42.求二叉树的深度和宽度
    iOS_正則表達式
    在应用中更新App版本号
  • 原文地址:https://www.cnblogs.com/kinglongdai/p/8529220.html
Copyright © 2020-2023  润新知