HTTP content-type

Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

常见的媒体格式类型如下:

text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:

application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:

multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

formdata和json的区别:

看下面的图就明白了。
从前端传来的都是二进制数据
1、content-type是不同的
2、json我们已经序列化好了,而formdata还是需要进行处理,虽然说后端框架已经帮我们处理好了。
formdata:


json:


在formdata中有种特殊的格式:
multipart/form-data


这种格式是传递的一条消息,相当于在消息体里面套消息, 给文件上传提供了便利,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;
由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

总结:

在Form元素的语法中,EncType表明提交数据的格式,用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
下边是说明:
application/x-www-form-urlencoded : 表单数据被编码为名称/值对。这是标准的默认编码格式。
multipart/form-data : 表单数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
application/json: JSON数据格式,将数据进行序列化的一种方式,后端可以直接使用。
text/plain : 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
补充
form的enctype属性为编码方式,常用有两种: application/x-www-form-urlencoded 和 multipart/form-data , 默认为application/x-www-form-urlencoded 。
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server。
如果没有 type=file 的控件,用默认的 application/x-www-form-urlencoded 就可以了。
但是如果有 type=file 的话,也就是需要上传文件,就要用到 multipart/form-data 了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file)、Content-Type(默认为text/plain)、name(控件name)等信息,并加上分割符(boundary)。

formdata和json相关推荐

  1. 一个接口同时支持 form 表单、form-data、json 的优雅写法

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://juejin.cn/post/7054441239839506446 最近重写个项目遇到个比较棘手的问题,老项 ...

  2. 关于ajax form-data和json的区别,及其application/x-www-form-urlencoded;charset=UTF-8问题解决方案

    常见的ajax传值有两种方式 form-data $.ajax({type: "post",url: ctx + "login",data: {"us ...

  3. formdata 转json

    function toLogin() {var formData = new FormData($("form#arg")[0]);jQuery.ajax({url:domain ...

  4. post请求将formdata 转json

    contentType: "application/json;charset-UTF-8", $.ajax({type: "POST",headers:{//* ...

  5. HTTP Request Content-Type:application/x-www-form-urlencoded、multipart/form-data、application/json

    前言 application/x-www-form-urlencoded multipart/form-data application/json http请求 http请求由三部分组成,分别是:请求 ...

  6. Content-Type四种常见取值application/x-www-form-urlencoded,multipart/form-data,application/json,text/xml

    四种常见的 POST 提交数据方式(application/x-www-form-urlencoded,multipart/form-data,application/json,text/xml) 一 ...

  7. javascript中JSON对象和formdata格式互相转换

    在工作中需要用到表单提交,有些是JSON对象格式的,但是要用到FormData格式的数据,所以需要转换.代码如下://json对象转formdata格式function jsonToFormData( ...

  8. JSON对象转成formData对象,formData对象转成JSON对象

    在向后端请求时,如果上传的数据里存在file文件对象,需要用到表单提交,这时候我们需要将JSON对象,转成formData对象,具体见代码 const formData = new FormData( ...

  9. 服务器处理 json 数据

    今天做小程序后端,需要处理 json 数据,我用的 express 框架,无法直接处理,需要进行 json 提取,网上找了一堆,发现json 四种解析格式,在此记录一下 www-form-urlenc ...

最新文章

  1. python中的 怎么用_Python中如何调用Linux命令
  2. Windows下phpStudy中的Apache无法启动的排查方法
  3. [trustzone]-ARMV8的aarch64和aarch32环境下ELx级别的理解
  4. 卷积为什么如此强大?一文全解深度学习中的卷积
  5. SQL Server2012 安装方法
  6. USACO-Section2.2 Preface Numbering
  7. Delphi 2009 之 TCategoryPanelGroup[5]: HeaderStyle
  8. docker基础——关于安装、常用指令以及镜像制作初体验
  9. Algs4-2.3.25切换到插入排序的试验
  10. php extension,php的extension要开启哪些
  11. cflow——C语言函数调用关系生成器
  12. hprose java 下载_Hprose Java下载
  13. 人资(人事)送命连环问,51个问题。
  14. 概率分布函数--二项分布poisson分布
  15. ssm项目——教务系统
  16. More Effective C++之 Item M35:让自己习惯使用标准C++语言
  17. matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰
  18. 和GGA的第一次亲密接触
  19. 全网通4g显示无服务器,4G转wifi 物联网全网通插卡4G路由器模块 4G工业路由模块...
  20. 3dmax 单位匹配和基本单位设置

热门文章

  1. 非官方GitChat客户端及代码发布
  2. 2021-2025年中国可再生能源核心材料行业市场供需与战略研究报告
  3. WebView中点击全屏时的视频图像变形问题
  4. CF 1716 C. Robot in a Hallway 思维 2000
  5. 宗地从上到下从左到右西北角顺时针界址点编码、宗地界址点成果表、宗地四至情况说明、宗地四至(东西南北)提取、界址线走向说明
  6. 容祖儿爱情复兴在线试听,容祖儿 爱情复兴歌词,下载 mp3
  7. Linux使用4g模块拨号上网
  8. [附源码]JAVA毕业设计同学录网站(系统+LW)
  9. ISO C90 forbids mixed declarations and code 编译报错
  10. HttpURLConnection 表单提交数据