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


EncType:

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

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

如下圖所示Content-Type:

 

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

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

客戶端:

發送"test=I'm Egret"

服務端:

 

 application/json的發送和接收

 序列化后的 JSON 字符串

客戶端:

 

服務端:

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

2. 然后使用json_decode解碼轉化為數組格式。

3. 一般用於php接口中

客戶端post提交數據有application/json和application/x-www-form-urlencoded兩種方式
后者可以直接使用PHP的$_post直接獲取
因為后者是瀏覽器編碼好的名稱/值對格式
前者是發送的原始json數據
需要PHP使用php_get_contents獲取原始數據進行json_decode解碼為數組使用
通常ajax默認提交格式為后者
不過當下流行的mvvm框架喜歡使用axios提交數據
而axios默認的請求頭就是application/json,所以寫PHP接口的時候需要留意一下。

附錄:

axios

Vue2.0之后,尤雨溪推薦大家用axios替換JQuery ajax,想必讓axios進入了很多人的目光中。
axios 是一個基於Promise 用於瀏覽器和 nodejs 的 HTTP 客戶端,本質上也是對原生XHR的封裝,只不過它是Promise的實現版本,符合最新的ES規范,它本身具有以下特征:
1.從瀏覽器中創建 XMLHttpRequest
2.支持 Promise API
3.客戶端支持防止CSRF
4.提供了一些並發請求的接口(重要,方便了很多的操作)
5.從 node.js 創建 http 請求
6.攔截請求和響應
7.轉換請求和響應數據
8.取消請求
9.自動轉換JSON數據
PS:防止CSRF:就是讓你的每個請求都帶一個從cookie中拿到的key, 根據瀏覽器同源策略,假冒的網站是拿不到你cookie中得key的,這樣,后台就可以輕松辨別出這個請求是否是用戶在假冒網站上的誤導輸入,從而采取正確的策略。


免責聲明!

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



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