application/json 和 application/x-www-form-urlencoded 區別
阿新 • • 發佈:2021-02-04
技術標籤:大前端前端javascript計算機網路
application/json 和 application/x-www-form-urlencoded 同為前端向後端伺服器傳送表單資料時的編碼型別,通過在請求頭中對 Content-Type 設定 enctype 屬性選擇對應的資料編碼方式,在傳送到伺服器之前對所有字元進行編碼,這兩種方式都是 POST 請求提交資料的方式。
application/json: 是目前比較流行的一種資料提交方式。它的引數體是一個json,不需要對引數體進行序列化處理。後端只需要對json進行解析。如果要提交json格式的資料,還需要在請求頭中加入 content-type: application/json。
- 優勢:是前端不需要關心資料結構的複雜度,後端解析方便。
- 問題:少數瀏覽器不相容。
application/x-www-form-urlencoded:是最常見的 POST 提交資料的方式,瀏覽器的原生表單如果不設定 enctype
屬性,那麼最終就會以 application/x-www-form-urlencoded 方式提交資料,是未指定屬性時的預設值。 資料傳送過程中會對資料進行序列化處理,以鍵值對形式?key1=value1&key2=value2的方式傳送到伺服器。 資料被編碼成以 '&'
分隔的鍵-值對, 同時以 '='
分隔鍵和值。非字母或數字的字元會被 percent-encoding
- 優勢: 所有瀏覽器都相容。
- 問題:在資料結構及其複雜時,服務端資料解析變得很難
舉例. 向伺服器傳送資料 {a:"a", b:"b"},
如果頭的格式是application/x-www-form-urlencoded, 則ajax.send("a='a'&b='b'");
如果頭的格式是application/json, 則ajax.send(JSON.stringify(data));
補充:Content-Type 值出了上述兩種還有,multipart/form-data和text/plain方式
- multipart/form-data: 主要用於檔案上傳,將檔案轉成二進位制資料進行傳輸,不涉及轉碼。
- text/plain: 是使用純文字進行傳輸,平時用的很少