https://www.cnblogs.com/softidea/p/5745369.html
我們知道,HTTP 協議是以 ASCII 碼傳輸,建立在 TCP/IP 協議之上的應用層規范。
規范把 HTTP 請求分為三個部分:狀態行、請求頭、消息主體。類似於下面這樣:
BASH<method> <request-URL> <version> 狀態行 <headers> 請求頭 <entity-body> 消息主體
HTTP 1.1協議規定post提交的數據必須放在消息主體內 ,但協議沒有規定數據必須使用什么編碼方式,只要最后發送的http請求滿足上面的格式就可以。
客戶端通過 enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。若沒有設置enctype屬性值,則enctype屬性默認值為application/x-www-form-urlencoded
application/x-www-form-urlencoded | 在發送前編碼所有字符(默認) |
multipart/form-data | 不對字符編碼。 在使用包含文件上傳控件的表單時,必須使用該值。 |
text/plain | 空格轉換為 "+" 加號,但不對特殊字符編碼。 |
服務端通過headers中的Content-Type來判斷消息主體中的內容使用來什么編碼。
當content-type的值為 application/x-www-form-urlencoded 時