關於讀音
為了防止大家出去丟人,我先示范一下,MIME應該獨坐[maim],聽起來就好像“男人”的英語法人一樣。
瀏覽器和MIME的關系
瀏覽器依靠MIME類型解釋網頁。
每當瀏覽器請求一個web頁面時,web服務器會在發送實際內容之前,先發送一些頭信息(Header)。
Content_Type就是所謂的MIME類型。這個類型是web服務器返回的,它標識了這個頁面內容類型,表示這是html文本,當實際內容從服務器返回來之后,瀏覽器就會根據這個MIME類型調用相應的模塊進行處理。
每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,后面定義具體的種類。下面是常用文件后綴和MIME類型對應關系
常見的MIME類型
超文本標記語言文本 .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類型不一樣,如css文件和js文件的MIME類型分別為text/css和application/x-javascript。瀏覽器就是根據這些MIME類型來調用自身不同的模塊來處理不同的文件的,比如負責css解釋的模塊將css樣式應用到html上,負責處理圖片的模塊將圖片顯示到頁面上。這樣我們才看到了一個個精彩的網頁。
由於MIME類型與文檔的后綴相關,因此服務器使用文檔的后綴來區分不同文件的MIME類型,服務器中必須定義文檔后綴 和MIME類型之間的對應關系。
有些類型的MIME文件,打開的時候,即會自動下載該文件,這也是瀏覽器識別MIME類型的結果。
留個問題
有在返回的頭信息中沒有Content-Type屬性的情況,那么瀏覽器會根據文件后綴判斷文件類型嗎?
MIME和ajax請求
請求有發送請求和接收請求兩部分。
發送請求中設置content-type
目的是設置要發送給服務器數據的格式:
1.發送json格式數據: xhr.setRequestHeader("Content-type","application/json; charset=utf-8");1 2.發送表單數據: xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");1 3.發送純文本(默認值): xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8");1 4.發送html文本: xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");1 5.編碼可帶可不帶: // 不帶字符編碼寫法 xhr.setRequestHeader("Content-type", "application/json");12 6.值對大小寫不敏感: xhr.setRequestHeader("Content-type","Application/JSON; charset=utf-8");
響應中的content-type作用,上文中提到是瀏覽器解析返回數據的一句
AJAX overrideMimeType作用
我們經常在AJAX代碼中發現如下代碼:
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
其作用是:重寫由服務器返回的MIME type,針對某些特定版本的mozillar瀏覽器的BUG進行修正
注意,這個方法必須在send()之前被調用。
具體來說:
如果來自服務器的響應沒有 XML mime-type 頭部,則一些版本的 Mozilla 瀏覽器不能正常運行。
對於這種情況,httpRequest.overrideMimeType('text/xml'); 語句將覆蓋發送給服務器的頭部,強制 將text/xml 作為 mime-type。
附上常見的content-type類型
常見的媒體格式類型如下:
- text/html : HTML格式
- text/plain :純文本格式
- text/xml : XML格式
- image/gif :gif圖片格式
- image/jpeg :jpg圖片格式
- image/png:png圖片格式
以application開頭的媒體格式類型:
- application/xhtml+xml :XHTML格式
- application/xml : XML數據格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON數據格式
- application/pdf :pdf格式
- application/msword : Word文檔格式
- application/octet-stream : 二進制流數據(如常見的文件下載)
- application/x-www-form-urlencoded : <form encType=””>中默認的encType,form表單數據被編碼為 key/value格式發送到服務器(表單默認的提交數據的格式)
另外一種常見的媒體格式是上傳文件之時使用的:
- multipart/form-data : 需要在表單中進行文件上傳時,就需要使用該格式
以上就是我們在日常的開發中,經常會用到的若干content-type的內容格式。