天天看點

HTTP請求中,幾種常見的Content-Type類型

POST請求的消息主體放在entity body中,服務端根據請求頭中的Content-Type字段來擷取消息主體的編碼方式,進而進行解析資料。

1. application/x-www-form-urlencoded

最常見的 POST 送出資料的方式,原生Form表單,如果不設定 enctype

屬性,預設為application/x-www-form-urlencoded 方式送出資料。

首先,Content-Type被指定為application/x-www-form-urlencoded;其次,送出的表單資料會轉換為鍵值對并按照key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL轉碼。

大部分服務端語言都對這種方式有很好的支援。 另外,如利用AJAX 送出資料時,也可使用這種方式。例如jQuery,Content-Type預設值都是”application/x-www-form-urlencoded;charset=utf-8”。

2. multipart/form-data

另一個常見的 POST 資料送出的方式, Form 表單的 enctype設定為multipart/form-data,它會将表單的資料處理為一條消息,以标簽為單元,用分隔符(這就是boundary的作用)分開。

3. application/json

Content-Type: application/json 作為響應頭比較常見。實際上,現在越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化後的 JSON 字元串,其中一個好處就是JSON 格式支援比鍵值對複雜得多的結構化資料。

由于 JSON 規範的流行,除了低版本 IE 之外的各大浏覽器都原生支援JSON.stringify,服務端語言也都有處理 JSON 的函數,使用起來沒有困難。Google 的 AngularJS 中的 Ajax 功能,預設就是送出 JSON 字元串。

4. text/xml

XML的作用不言而喻,用于傳輸和存儲資料,它非常适合網際網路傳輸,提供統一的方法來描述和交換獨立于應用程式或供應商的結構化資料,在JSON出現之前是業界一大标準(當然現在也是),相比JSON的優缺點大家有興趣可以上網search。是以,在POST送出資料時,xml類型也是不可缺少的一種,雖然一般場景上使用JSON可能更輕巧、靈活。

5. binary (application/octet-stream)