1. MIME:
MIME(Multipurpose Internet Mail Extention)多用途Internet的郵件擴展,它是Internet上常用的編碼格式。 除了可以發(fā)送文本郵件的基本功能外,還可以發(fā)送二進(jìn)制文件,包括圖形,動畫,聲音等多媒體的二進(jìn)制文件和程序。
服務(wù)器會將它們發(fā)送的多媒體數(shù)據(jù)的類型告訴瀏覽器,而通知手段就是說明該多媒體數(shù)據(jù)的MIME類型,從而讓瀏覽器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服務(wù)器將MIME標(biāo)志符放入傳送的數(shù)據(jù)中來告訴瀏覽器使用哪種插件讀取相關(guān)文件。
瀏覽器接收到文件后,會進(jìn)入插件系統(tǒng)進(jìn)行查找,查找出哪種插件可以識別讀取接收到的文件。如果瀏覽器不清楚調(diào)用哪種插件系統(tǒng),它可能會告訴用戶缺少某插 件,或者直接選擇某現(xiàn)有插件來試圖讀取接收到的文件,后者可能會導(dǎo)致系統(tǒng)的崩潰。傳輸?shù)男畔⒅腥鄙?/span>MIME標(biāo)識可能導(dǎo)致的情況很難估計,因為某些計算機系 統(tǒng)可能不會出現(xiàn)什么故障,但某些計算機可能就會因此而崩潰。
最早的HTTP協(xié)議中,并沒有附加的數(shù)據(jù)類型信息,所有傳送的數(shù)據(jù)都被客戶程序解釋為超文本標(biāo)記語言HTML 文檔,而為了支持多媒體數(shù)據(jù)類型,HTTP協(xié)議中就使用了附加在文檔之前的MIME數(shù)據(jù)類型信息來標(biāo)識數(shù)據(jù)類型。由于MIME類型與文檔的后綴相關(guān),因此 服務(wù)器使用文檔的后綴來區(qū)分不同文件的MIME類型,服務(wù)器中必須定義文檔后綴和MIME類型之間的對應(yīng)關(guān)系。
常見的MIME類型:
超文本標(biāo)記語言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF圖形 .gif image/gif
JPEG圖形 .ipeg,.jpg image/jpeg
au聲音文件 .au audio/basic
MIDI音樂文件 mid,.midi audio/midi,audio/x-midi
RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
用戶可以通過使用MIME以設(shè)置服務(wù)器傳送多媒體如聲音和動畫信息,這一切可能通過CGI腳本來進(jìn)行。在下面的文章中,你可以了解到一此關(guān)于MIME和關(guān)于在網(wǎng)絡(luò)上使用MIME的知識。
MIME 是一種技術(shù)規(guī)范,它原來是用于電子郵件的,現(xiàn)在也可以用于瀏覽器上,傳送可以供瀏覽器識別的信息,關(guān)于MIME的知識并是十分難懂的,有一些基本的計算機 概念就可以理解了,但如果要進(jìn)一步使用,就必須注意內(nèi)容。實際上,我們在上網(wǎng)的時候就已經(jīng)接觸到了MIME,只是瀏覽器和服務(wù)器在底層實現(xiàn)了。
MIME 有時候被錯誤地理解為多媒體Internet郵件擴展(Multimedia Internet Mail Extensions),這是一個錯誤,但是MIME在網(wǎng)上經(jīng)常用于多媒體應(yīng)用程序,所以人們以為這是它是多媒體郵件擴展,而實際上它應(yīng)該被稱為多用途 Internet郵件擴展(Multipurpose Internet Mail Extensions),這一點一定要注意,因為有時候內(nèi)容里根本沒有非文本成份。
MIME對于郵件系統(tǒng)的擴展是巨大的,因為在 MIME出現(xiàn)以前,信件內(nèi)容如果要包括聲音和動畫,就必須把它變?yōu)?/span>ASCII碼或把二進(jìn)制的信息變成可以傳送的編碼標(biāo)準(zhǔn),而接收方必須經(jīng)過解碼才可以獲得 聲音和圖畫信息。MIME提供了一種可以在郵件中附加多種不同編碼文件的方法。這與原來的郵件是大大不同的。而現(xiàn)在MIME已經(jīng)成為了HTTP協(xié)議標(biāo)準(zhǔn)的一個部分。
MIME是服務(wù)器通知客戶機傳送文件是什么類型的主要方法,客戶機瀏覽器也通過MIME告訴服務(wù)器它的參數(shù)。在網(wǎng)上,如果接 收到的文件沒有MIME頭,就默認(rèn)它為HTML格式。但這樣也不好,因為當(dāng)MIME的包頭是text/plain時,瀏覽器將直接顯示而不關(guān)心它的什么字 體,顏色之類的參數(shù),這樣顯示出來的內(nèi)容可不是很好看呀。
MIME頭是什么樣子要看它是用在電子郵件中還是用在瀏覽器上,兩者內(nèi)容可能有所不同。對于郵件頭來說,版本號,內(nèi)容類型聲明,編碼方式,內(nèi)容描述是必不可少的。這是用于郵件頭中的格式,在下面,我們將重點說到在HTTP中傳送MIME頭,這時MIME頭要簡單一些。
下例是一個郵件的標(biāo)準(zhǔn)MIME頭:
Mime-Version: 1.0 //版本號:1.0
Content-Type: multipart/mixed; boundary="IMA.Boundary.750407228" //內(nèi)容類型是多種的
--IMA.Boundary.750407228
Content-Type: text/plain; charset=US-ASCII //內(nèi)容類型:文本,字符是ASCII的
Content-Transfer-Encoding: 7bit //編碼方式:7位
Content-Description: cc:Mail note part
在 用于瀏覽器時,用戶不需要知道那么多的信息,所以MIME頭就比較簡單了。在訪問一個網(wǎng)頁時,瀏覽器和服務(wù)器之間產(chǎn)生一個會話,作為請求內(nèi)容的一部分,瀏 覽器發(fā)送它能夠理解的MIME類型的描述,這就告訴服務(wù)器,瀏覽器除了網(wǎng)頁外還可以支持什么,服務(wù)器對這個信息一般不作為什么修改。
服務(wù)器通過發(fā)向客戶機的MIME頭通知客戶瀏覽器內(nèi)容是什么,我們看看下面這個頭:
Content-type: text/html
在實現(xiàn)的時候,一定要注意MIME頭后要跟一個空行,不然這個頭會被瀏覽器忽略,這個頭會被當(dāng)作文本顯示出來。當(dāng)服務(wù)器傳送GIF圖象時,頭會如下:
Content-type: image/gif
Content-transfer-encoding: BINARY
通 常的MIME內(nèi)容類型并不起什么作用,瀏覽器可以自己識別內(nèi)容的類型,但是如果您使用一些另外的類型,這個問題可就大了,如果你使用了 text/postscript,那瀏覽器會顯示下載窗口,或就把這個東西顯示出來,那可就不好辦了。下面我們介紹一下標(biāo)準(zhǔn)MIME類型。
Text. 文本,它用于描述不同類型的文本,包括通常的文本,PostScript和HTML,雖然HTML不是一個可能的子類型。
Multipart. 多類型,指出此信息包括多種信息,不止一種類型。
Message. 用于標(biāo)記不同類型的消息。
Application. 應(yīng)用類型。
Image. 圖象,用于標(biāo)明圖形文件。
Audio. 聲音,用于標(biāo)明聲音文件。
Video. 影象,用于標(biāo)明動畫文件。
每 個MIME類型有不同的子類型,實際上,您不可能單獨使用類型而不使用子類型,只有一個例外,這就是"telnet"類型。IANA提供45種類型/子類 型對支持。當(dāng)然,標(biāo)準(zhǔn)是開放的,允許用戶自定義自己的類型,用戶自定義類型要以“X-”開始以示區(qū)別。在添加新的類型時,一定要注意,盡量使用已有的類型 達(dá)到自己的目的。如果非要添加新的類型,一定要保證服務(wù)器一方支持這種類型,也要保證客戶端也能夠通過一些應(yīng)用程序(如插件)來識別新類型。如果您的網(wǎng)站 的訪問者很廣,不要輕易使用新類型,要么使用已有的類型,或者向IANA提出注冊請求。