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