Http中的Content-Type的理解和使用


一、Http協議

Http協議有請求方和回復方。
請求方:請求頭、請求行、請求體
回復方:回復頭、回復行、回復體。

在請求頭、回復頭中描述了使用的http協議、請求方式、請求url等信息
image
在請求行中描述了,一些元數據,這些元數據是用來描述本次http請求,其中就有Content-Type該屬性。
在請求體則是會放置請求的數據到服務器中。

二、Content-type

http需要傳遞的信息都會放在請求體(除GET),傳遞到服務器,則服務器會解析對應的請求體,但是服務器需要判斷該請求體是什么格式,則會根據什么方式進行解析請求體,因此就出現了Content-type,該屬性用於表示請求體的數據是什么格式,同時也表示回復體的數據是什么格式,這樣服務器以及瀏覽器才會怎么應該怎么樣去解析請求體或者回復體的內容了。

常見的Content-type:

  • MulitPart/form-data 文件上傳格式
  • application/json json格式
  • application/x-www-form-data-urlencoded 標准key-value格式
  • application/pdf pdf格式
  • application/msword word格式
  • application/octet-stream : 二進制流數據(如常見的文件下載)

三、application/json

在現在web項目大多數都 是使用application/json進行發送數據和接收數據,axios默認就是使用application/json,springmvc則可以使用@RequestBody進行接收數據和解析數據。
如果在請求行中使用application/json,則請求體的數據,則會被解析成一個json字符串發送到后端服務器中。
image
當然在前端進行處理對象的時候,應該使用JSON.stringify(對象)進行json序列化

四、application/x-www-form-data-urlencoded

在form表單進行提交時,如果沒有重寫提交方法,則會使用該種類型,該類型是會將數據編寫成一個key:value的形式。
image
如果是get請求方式的話,則會將key=value的形式拼接在url后面。

五、MulitPart/form-data

該content-type常常用於文件上傳的表單請求,也就是在表單中有文件內容,因此需要使用mulitpart/form-data的形式。
image
在聲明Content-Type: multipart/form-data; boundary=something時,需要編寫其boundary,該boundary也是作為一個分割符進行作用。
一個form表單中可能有input輸入框,也有file上傳,內容會全部編寫在請求體發送到后端服務器。

六、注意點

在聲明content-type的時候需要注意聲明其charset,如下所示:
Content-Type: text/html; charset=utf-8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM