1. 程式人生 > 其它 >application/json 和 application/x-www-form-urlencoded 區別

application/json 和 application/x-www-form-urlencoded 區別

技術標籤:大前端前端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: 是使用純文字進行傳輸,平時用的很少