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的,这样,后台就能够轻松辨别出这个请求是不是用户在假冒网站上的误导输入,从而采起正确的策略。

相关文章
相关标签/搜索