想寫這篇文章的原因不太想說,哎,十萬個後台十萬個想法。
post是前端最常見的一種請求資料方式,比get請求方式更安全的同時,也支援更大的資料傳輸。
http協議把http請求分為三個部分:狀態行、請求頭、訊息主體
通過post提交的資料需要放在請求頭的訊息主體中,主要支援以下四種格式,伺服器主要通過對請求頭的content-type引數來確定以何種方式對主體進行解碼。
這是最常見的一種post提交資料方式,是中預設的enctype值,提交的資料按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 url 轉碼。如圖:
該方式可以更好的支援提交複雜的結構化資料,提交到伺服器的是序列化後的json字串。如圖:
以提高二進位制檔案的傳輸效率,這種方式一般用來上傳檔案。同時也會因為其特殊的格式增加乙個boundary引數,該引數主要用來分隔多個檔案、表單項。如圖:
現在幾乎不用該方式提交資料給伺服器。
聯調時,遇見提交資料後,後端總是說取不到值得情況,就要考慮content-type的值啦。雖然也曾和後端小夥伴爭論過json還是formdata哪種資料提交格式更好,最後誰也沒爭過誰。
四種常見的 POST 提交資料方式
urlencoded 其次,提交的資料按照 key1 val1 key2 val2 的方式進行編碼,key 和 val 都進行了 url 轉碼。大部分服務端語言都對這種方式有很好的支援。例如 php 中,post title 可以獲取到 title 的值,post sub 可以得到 sub 陣列。這...
四種常見的POST提交資料方式
http 1.1 協議規定的 http 請求方法有 options get head post put delete trace connect 這幾種。其中 post 一般用來向服務端提交資料,本文主要討論 post 提交資料的幾種方式。我們知道,http 協議是以 ascii 碼傳輸,建立在 t...
HTTP四種常見的POST提交資料方式
http 1.1 協議規定的 http 請求方法有 options get head post put delete trace connect 這幾種。其中 post 一般用來向服務端提交資料,本文主要討論 post 提交資料的幾種方式。我們知道,http 協議是以 ascii 碼傳輸,建立在 t...