POST 提交数据的时候参数有哪些类型?
前言
1. HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
2. 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
3. 数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
种类
1. application/x-www-form-urlencoded
这应该是最常见的 POST 提交数据的方式了。浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。
请求头内容类型为:Content-Type: application/x-www-form-urlencoded;charset=utf-8
提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。
一般的POST操作不指名类型时默认为该类型。
2. multipart/form-data
这也是常见的post请求方式,一般用来上传文件,各大服务器的支持也比较好。所以我们使用表单上传文件时,必须让<form>表单的enctype属性值为 multipart/form-data.
请求头内容类型为:Content-Type: application/ multipart/form-data;
注意:以上两种方式:application/x-www-form-urlencoded和multipart/form-data都是浏览器原生支持的。
3. application/json
用来告诉服务端消息主体是序列化的JSON字符串.
4. text/xml
代表提交的是xml消息
在PHP中
仅在Coentent-Type取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST,
PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA (使用这个变量需要特殊设置php.ini),
只有Coentent-Type为multipart/form-data的时候,PHP才不会将http请求数据包中的,相应数据填入php://input,否则其它情况都会。
相关文章
- 大数据可视化方法有哪些「建议收藏」
- sql中decimal类型数据保留两位小数
- zblog后台编辑模块式时提示“UNKNOWN:未查询到相关数据”错误的解决办法
- mysql-查询分组的最新数据
- Python Xpath解析 数据提取 基本使用
- 【EventBus】事件通信框架 ( 订阅方法注册 | 注册 事件类型 - 订阅类 + 订阅方法 到指定集合 | 取消注册 数据准备 )
- MongoDB数据的插入、查询、更新和删除
- Linux将数据盘挂载到系统盘上的方法
- Hive五Hive函数UDF详解大数据
- 如何使用hibernate存取clob和blob类型数据详解编程语言
- JDBC批量插入数据优化,使用addBatch和executeBatch详解编程语言
- MySQL ID最大值限制了解这些实际数据!(mysqlid的最大值)
- MySQL BIT类型数据的长度特性(mysqlbit长度)
- 类型MySQL中的二进制数据类型及其应用(mysql二进制数据)
- 类型MySQL中的二进制数据类型及其应用(mysql二进制数据)
- 利用Oracle触发器实现数据安全性(oracle触发器类型)
- Oracle数据恢复:找回丢失数据的宝贵工具(oracle数据恢复工具)
- Redis:管理复杂数据的宝藏(redis 储存类型)
- CC类库调用MySQL一种新的数据访问方式(cc类库调用mysql)
- 登录Oracle数据库探索存储在云里的数据之谜(login oracle)
- es数据实时同步到Oracle数据库(es同步到oracle)
- Oracle事务处理使用不同类型实现数据一致性(oracle事务处理类型)
- 利用Redis实现数据排重技术(利用redis 数据排重)
- Redis集群实现高可用性与数据持久化(redis集群与持久化)
- 从Oracle分析不同类型数据的分组方式(oracle不同类型分组)
- oracle int类型数据上限探究(oracle int上限)
- 批量复制数据
- js正则表达式验证a/b/c格式的类型数据