multipart/form-data,application/json和application/x-www-form-urlencoded區別


application/json和application/x-www-form-urlencoded都是表單數據發送時的編碼類型。

EncType:

enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。

默認地,表單數據會編碼為 "application/x-www-form-urlencoded"。就是說,在發送到服務器之前,所有字符都會進行編碼。

application/x-www-form-urlencoded編碼類型的發送和接收

窗體數據被編碼為名稱/值對

客戶端:

發送"test=I'm Egret",瀏覽器按F12,Network中查看發送數據

 

服務端:

1. 用file_get_contents拿Post數據。$_POST['test']取不到數據。

2. 然后使用json_decode解碼。 原始file_get_contents是字符串?

3. php中json訪問方式 $json->test。php中沒有{test:"I'm Client"}這種格式的,$json = {test:"I'm Client"}會報錯。

4. 返回數據時將數組json_encode編碼。php中json格式沒有,用數組代替。

使用json格式,php頭部需要加上如下代碼,否則會報錯。

header('Access-Control-Allow-Headers:x-requested-with,content-type');

 

application/x-www-form-urlencoded: 窗體數據被編碼為名稱/值對。這是標准的編碼格式。 
multipart/form-data: 窗體數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。 
text/plain: 窗體數據以純文本形式進行編碼,其中不含任何控件或格式字符。

form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded。 
當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form數據轉換成一個字串(name1=value1&name2=value2...),然后把這個字串append到url后面,用?分割,加載這個新的url。 
當action為post時候,瀏覽器把form數據封裝到http body中,然后發送到server。 

如果沒有type=file的控件,用默認的application/x-www-form-urlencoded就可以了。 
但是如果有type=file的話,就要用到multipart/form-data了。瀏覽器會把整個表單以控件為單位分割,並為每個部分加上Content-Disposition(form-data或者file)、Content-Type(默認為text/plain)、name(控件name)等信息,並加上分割符(boundary)。

 

參考文章:https://www.cnblogs.com/gamedaybyday/p/7028128.html


免責聲明!

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



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