MIME(Multipurpose Internet Mail Extensions)多用途網絡郵件擴展類型,可被稱為Media type或Content type,
它設定某種類型的文件當被瀏覽器打開的時候需要用什么樣的應用程序,多用於HTTP通信和設定文檔類型例如HTML。
之所以叫多用途網絡郵件擴展類型,因為它最早被用於電子郵件系統,后用於瀏覽器,服務器將此類型名放入傳給瀏覽器的數據中以告訴瀏覽器用什么樣的插件打開它
MIME組成:(type/subtype; parameter)) 主類型+子類型+參數(可選)也可稱為信息頭+段頭,這種稱為更接近於“郵件”的概念
寫法上,傳統寫法是全小寫,但其本身對大小寫不敏感
當前被認可的主類型包括: application text image multipart audio example font message model multipart video
子類型也由媒體類型組成,但它也能包含其他內容,例如前綴、作者名。
備注: 寫法上注意;與后面的參數之間有空格
例如: text/html; charset=UTF-8
常見MIME類型:
application: 某種二進制附件,對於沒有subtype的情況,默認是application/octet-stream
text: 文本,理論上可讀,對於沒有subtype的情況,默認是text/plain
image: 圖像
audio: 音頻
video: 視頻
multipart: 多部分文檔文件(復合文檔文件)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面是詳細介紹
application/octet-stream 未知的應用程序文件
application/json json數據
text/plain 未知的文本文件(純文本文件),瀏覽器會認為這是可以直接顯示的
注: 瀏覽器分辨文件是基於MIME的,而不會把文件打開查看是否是其他類型,例如用link鏈接了一個標記為text/plain的文件,就算此文件是css文件,就算其后綴是.css,瀏覽器依舊不認
text/css css文件
text/html HTML文件
image/gif gif文件
常見的還有image/jpeg、image/png、image/svg
很多瀏覽器支持icon image/x-icon
multipart/form-data 多用於form表單提交,其中multipart即多部分文檔,這里提供一個例子解析何為多部分文檔
<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--
它通過分割線將內容分割成不同部分,每部分有自己的實體和請求頭,因為被分割了,所以被稱為多部分文檔。
這里的boundary是一個分隔符,可自定義,為了不和正常文本相混淆,一般設得復雜些,例如 ---------------------6354444552345。
注意: 窗口數據僅一條,用分割線和換行符隔開,這是它與application/x-www-form-urlencoded的很大區別
application/x-www-form-urlencoded
與前者類似,注意區別:
1.窗口數據被編碼為鍵值對;
2.當表單中包含文件上傳時只能用multipart/form-data;
3.multipart/form-data只支持post
關於具體區別,可移步: https://www.lvtao.net/dev/1179.html
備注: jquery默認content-type為application/x-www-form-urlencoded,這樣能應付大多數情況