日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MIME 类型

發(fā)布時(shí)間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MIME 类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:?https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

多用途Internet郵件擴(kuò)展(MIME)類型?是一種標(biāo)準(zhǔn)化的方式來表示文檔的性質(zhì)和格式。 它在IETF RFC 6838中進(jìn)行了定義和標(biāo)準(zhǔn)化。互聯(lián)網(wǎng)號(hào)碼分配機(jī)構(gòu)(IANA)是負(fù)責(zé)跟蹤所有官方MIME類型的官方機(jī)構(gòu),您可以在媒體類型頁面中找到最新的完整列表。

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

語法

通用結(jié)構(gòu)

type/subtype

MIME的組成結(jié)構(gòu)非常簡(jiǎn)單;由類型與子類型兩個(gè)字符串中間用'/'分隔而組成。并不允許空格存在。type?表示可以被分為復(fù)數(shù)子類的獨(dú)立類型。subtype 表示細(xì)分后的每個(gè)類型。

MIME類型對(duì)大小寫不敏感,但是傳統(tǒng)寫法都是小寫。

獨(dú)立類型

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

獨(dú)立類型表明了對(duì)文件的分類,可以是如下之一:

類型 描述 典型示例
text表明文件是普通文本,理論上是可讀的語言text/plain,?text/html,?text/css, text/javascript
image表明是某種圖像。不包括視頻,但是動(dòng)態(tài)圖(比如動(dòng)態(tài)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表明是某種二進(jìn)制數(shù)據(jù)

application/octet-stream,?application/pkcs12,?application/vnd.mspowerpoint,?application/xhtml+xml,?application/xml,??application/pdf,

application/json

對(duì)于text文件類型若沒有特定的subtype,就使用?text/plain。類似的,二進(jìn)制文件沒有特定或已知的 subtype,即使用?application/octet-stream。

Multipart 類型

multipart/form-data multipart/byteranges

Multipart?類型表示細(xì)分領(lǐng)域的文件類型的種類,經(jīng)常對(duì)應(yīng)不同的 MIME 類型。這是復(fù)合文件的一種表現(xiàn)方式。對(duì)于?multipart/form-data?的例外部分,可以使用HTML Forms?和?POST?方法,此外?multipart/byteranges使用狀態(tài)碼206?Partial?Content來發(fā)送整個(gè)文件的子集,而HTTP不能處理的復(fù)合文件使用一個(gè)特殊的方式:將信息直接傳送給瀏覽器(這時(shí)可能會(huì)建立一個(gè)“另存為”窗口,但是卻不知道如何去顯示內(nèi)聯(lián)文件。)

重要的MIME類型

application/octet-stream

這是應(yīng)用程序文件的默認(rèn)值。意思是?未知的應(yīng)用程序文件 ,瀏覽器一般不會(huì)自動(dòng)執(zhí)行或詢問執(zhí)行。瀏覽器會(huì)像對(duì)待 設(shè)置了HTTP頭Content-Disposition?值為“附件”的文件一樣來對(duì)待這類文件。

text/plain

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

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

text/css

任何一個(gè)CSS文件想要在網(wǎng)頁上被解釋執(zhí)行就必須為text/css 文件。但是服務(wù)器經(jīng)常不會(huì)分辨出使用.css后綴的CSS文件,并且將其MIME類型設(shè)置為text/plain?或?application/octet-stream?發(fā)送:在這種情況下,文件并不能被瀏覽器識(shí)別為CSS文件并且會(huì)被直接忽略。所以特別注意要給CSS文件設(shè)置正確的類型。

text/html

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

圖片類型

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

MIME 類型 圖片類型
image/gifGIF 圖片 (無損耗壓縮方面被PNG所替代)
image/jpegJPEG 圖片
image/pngPNG 圖片
image/svg+xmlSVG圖片 (矢量圖)

此處的類型劃分有一定的爭(zhēng)議,有人認(rèn)為此處應(yīng)該增加?WebP(image/webp),但是每個(gè)新增的圖片類型都會(huì)增加代碼的數(shù)量,這會(huì)帶來一些新的安全問題,所以瀏覽器供應(yīng)商對(duì)于添加類型非常小心。

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

音頻與視頻類型

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

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

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 是這個(gè)多媒體文件格式最常用的音頻解碼器。
video/ogg采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是?Theora;音頻解碼器為Vorbis 。
application/ogg采用OGG多媒體文件格式的音視頻文件。常用的視頻解碼器是?Theora;音頻解碼器為Vorbis 。
application/jsonapplication/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表單從瀏覽器發(fā)送信息給服務(wù)器。作為多部分文檔格式,它由邊界線(一個(gè)由'--'開始的字符串)劃分出的不同部分組成。每一部分有自己的實(shí)體,以及自己的 HTTP 請(qǐng)求頭,Content-Disposition和?Content-Type?用于文件上傳領(lǐng)域,最常用的?(Content-Length?因?yàn)檫吔缇€作為分隔符而被忽略)。

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>

會(huì)發(fā)送這樣的請(qǐng)求:

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/plainSimple file. -----------------------------8721656041911415653955004498--

multipart/byteranges

multipart/byteranges?用于把部分的響應(yīng)報(bào)文發(fā)送回瀏覽器。當(dāng)發(fā)送狀態(tài)碼206Partial Content時(shí),這個(gè)MIME類型用于指出這個(gè)文件由若干部分組成,每一個(gè)都有其請(qǐng)求范圍。就像其他很多類型Content-Type使用分隔符來制定分界線。每一個(gè)不同的部分都有Content-Type這樣的HTTP頭來說明文件的實(shí)際類型,以及?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/1270eta 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--

設(shè)置正確的MIME類型的重要性

很多web服務(wù)器使用默認(rèn)的?application/octet-stream?來發(fā)送未知類型。出于一些安全原因,對(duì)于這些資源瀏覽器不允許設(shè)置一些自定義默認(rèn)操作,導(dǎo)致用戶必須存儲(chǔ)到本地以使用。常見的導(dǎo)致服務(wù)器配置錯(cuò)誤的文件類型如下所示:

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

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

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

MIME 嗅探

在缺失 MIME 類型或客戶端認(rèn)為文件設(shè)置了錯(cuò)誤的 MIME 類型時(shí),瀏覽器可能會(huì)通過查看資源來進(jìn)行MIME嗅探。每一個(gè)瀏覽器在不同的情況下會(huì)執(zhí)行不同的操作。因?yàn)檫@個(gè)操作會(huì)有一些安全問題,有的 MIME 類型表示可執(zhí)行內(nèi)容而有些是不可執(zhí)行內(nèi)容。瀏覽器可以通過請(qǐng)求頭?Content-Type?來設(shè)置?X-Content-Type-Options?以阻止MIME嗅探。

其他傳送文件類型的方法

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

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

其他

  • Properly configuring server MIME types
  • Media formats supported by the HTML audio and video elements

  • https://www.iana.org/assignments/media-types/application/json

總結(jié)

以上是生活随笔為你收集整理的MIME 类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。