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

EncType:php

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

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

以下圖所示Content-Type:ajax

 

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

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

客戶端:數組

發送"test=I'm Egret"瀏覽器

服務端:服務器

 

 application/json的發送和接收cookie

 序列化後的 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的,這樣,後臺就能夠輕鬆辨別出這個請求是不是用戶在假冒網站上的誤導輸入,從而採起正確的策略。

相關文章
相關標籤/搜索