淺談HTTP的Content-Type

Content-Type,內容類型,用於定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件。

文件擴展名和Content-Type往往有一定的對應關係,如:

① .js:application/javascript

② .css:text/css

③ .xml:text/xml

④ .txt:text/plain


HTTP Header裏的Content-Type一般有3種:

① application/x-www-form-urlencoded:標準的編碼格式,數據被編碼爲名稱/值對。

② multipart/form-data: 數據被編碼爲一條消息,每個控件對應消息中的一個部分。

③ text/plain: 數據以純文本形式(text/json/xml/html)進行編碼,不含任何控件或格式字符。


form的enctype屬性爲編碼方式,常用有:application/x-www-form-urlencoded(默認)、multipart/form-data和application/json。

① application/x-www-form-urlencoded是常用的表單發包方式,普通的表單提交或js發包,默認都是通過這種方式。

<form action="" enctype="application/x-www-form-urlencoded"></form>

② multipart/form-data用在post方式的文件發包。

<form action="" enctype="multipart/form-data"></form>

③ application/json提交的數據是 JSON格式的字符串。

<form action="" enctype="application/json"></form>


當action爲get時,x-www-form-urlencoded的編碼方式把form數據轉換成一個字串(prop1=value1&prop2=value2...),追加到url後面,用?分割。

當action爲post時,瀏覽器把form數據封裝到http body中,發送到服務器。若表單中沒有type=file的控件,用默認的application/x-www-form-urlencoded即可;但若有type=file的控件,就要用到multipart/form-data。當action爲post且Content-Type是multipart/form-data,瀏覽器會把整個表單以控件爲單位分割,併爲每個部分加上Content-Disposition(form-data或file),Content-Type(默認爲text/plain),name(控件name)等信息,並加上分割符(boundary),如:Content-Type:multipart/form-data; boundary=------WebKitFormBoundaryOGkWPJsSaJCPWjZP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章