当前位置: 首页 > news >正文

Content-Type 值有哪些?

1、application/x-www-form-urlencoded

最常见 POST 提交数据的方式。

浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

    <form action="http://www.haha/ads/sds?name=小草莓&other=hahah" method="post"><input type="text" value="123"></form>

Cntent-Type 被指定为 application/x-www-form-urlencoded。

其次,提交的数据按照【name=小草莓&other=hahah】的方式进行编码,name 和 other 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。

2、multipart/form-data

一种常见的 POST 数据提交的方式

我们在使用表单上传文件时,必须让 form 的 enctyped 等于这个值。

    <form action="http://www.haha/ads/sds" method="post" enctype="multipart/form-data"><input type="file"><input type="submit" value="Submit" /></form>

如下,首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。

然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。

如果传输的是文件,还要包含文件名和文件类型信息。

消息主体最后以 --boundary-- 标示结束。

这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

 

上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段原生 form 表单也只支持这两种方式。

但是随着越来越多的 Web 站点,尤其是 Web/App,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。

3、application/json

现在越来越多的人把 application/json 作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。

由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。 

这种方案,可以方便的提交复杂的结构化数据,特别适合 RESTFRL 的接口

 

4、text/xml

XML-RPC(XML Remote Procedure Call)。它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。

XML-RPC 协议简单、功能够用,各种语言的实现都有。

它的使用也很广泛,如 WordPress 的 XML-RPC Api,搜索引擎的 ping 服务等等。

 

相关文章:

  • 【数据结构】堆排序
  • Java调用HTTPS接口,绕过SSL认证
  • 项目实战:封装响应结果以及抽取响应代码到工具类
  • 记录 vue + vuetify + electron 安装过程
  • 数据分析在程序员职业中的重要性及实践应用
  • AM@变系数线性微分方程中的可常系数化类型@欧拉方程
  • NI-9236 国产化10 kS/s/ch,350 Ω四分之一桥应变计,8通道C系列应变/桥输入模块
  • Python 正则表达式(RegEx)指南
  • 设计模式大赏(一):桥接模式,组合模式
  • Flutter屏幕适配
  • opencv第一个例子
  • dockefile
  • python脚本-requests模块
  • 直播间讨论区需要WebSocket,简单了解下
  • go-pprof-leak漏洞
  • ES6指北【2】—— 箭头函数
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • FineReport中如何实现自动滚屏效果
  • Median of Two Sorted Arrays
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python_网络编程
  • Python十分钟制作属于你自己的个性logo
  • Spring-boot 启动时碰到的错误
  • 程序员该如何有效的找工作?
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 类orAPI - 收藏集 - 掘金
  • 三分钟教你同步 Visual Studio Code 设置
  • 数据仓库的几种建模方法
  • 系统认识JavaScript正则表达式
  • 用quicker-worker.js轻松跑一个大数据遍历
  • !$boo在php中什么意思,php前戏
  • #includecmath
  • #Lua:Lua调用C++生成的DLL库
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (Git) gitignore基础使用
  • (pojstep1.1.2)2654(直叙式模拟)
  • (编译到47%失败)to be deleted
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (强烈推荐)移动端音视频从零到上手(下)
  • (算法)前K大的和
  • ./configure、make、make install 命令
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @EnableConfigurationProperties注解使用
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C\C++]读入优化【技巧】
  • [CSS]浮动
  • [ISITDTU 2019]EasyPHP