专栏首页学习分享-实践为王【总结】HTTP请求中,几种常见的Content-Type类型
原创

【总结】HTTP请求中,几种常见的Content-Type类型

一、application/x-www-form-urlencoded

最常见的 POST 提交数据的方式,原生Form表单,如果不设置 enctype 属性,默认为application/x-www-form-urlencoded 方式提交数据。

首先,Content-Type被指定为 application/x-www-form-urlencoded;其次,提交的表单数据会转换为键值对并按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。 另外,如利用AJAX 提交数据时,也可使用这种方式。例如 jQuery,Content-Type 默认值都是”application/x-www-form-urlencoded;charset=utf-8”。 二、multipart/form-data

另一个常见的 POST 数据提交的方式, Form 表单的 enctype 设置为multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符(这就是boundary的作用)分开,类似我们上面Content-Type中的例子。  由于这种方式将数据有很多部分,它既可以上传键值对,也可以上传文件,甚至多个文件。当上传的字段是文件时,会有Content-Type来说明文件类型;Content-disposition,用来说明字段的一些信息。每部分都是以 –boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(字段、文本或二进制等)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 –boundary– 标示结束。

三、application/json

Content-Type: application/json 作为响应头比较常见。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持JSON.stringify,服务端语言也都有处理 JSON 的函数,使用起来没有困难。 Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。

四、text/xml

XML的作用不言而喻,用于传输和存储数据,它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据,在JSON出现之前是业界一大标准(当然现在也是),相比JSON的优缺点大家有兴趣可以上网search。因此,在POST提交数据时,xml类型也是不可缺少的一种,虽然一般场景上使用JSON可能更轻巧、灵活。

五、binary (application/octet-stream)

在Chrome浏览器的Postman工具中,还可以看到”binary“这一类型,指的就是一些二进制文件类型。如application/pdf,指定了特定二进制文件的MIME类型。就像对于text文件类型若没有特定的子类型(subtype),就使用 text/plain。类似的,二进制文件没有特定或已知的 subtype,即使用 application/octet-stream,这是应用程序文件的默认值,一般很少直接使用 。

对于application/octet-stream,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。

很多web服务器使用默认的 application/octet-stream 来发送未知类型。出于一些安全原因,对于这些资源浏览器不允许设置一些自定义默认操作,导致用户必须存储到本地以使用。一般来说,设置正确的MIME类型很重要。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • golang中发送http请求的几种常见情况

    整理一下golang中各种http的发送方式 最初的一些项目中,很多的地方都使用到了golang发送http请求,之后再对请求收到的结果进行一些处理,所用到的模...

    李海彬
  • 一个HTTP打趴80%面试者 转

    面试一年多,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验。请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正...

    双面人
  • 一个HTTP打趴80%面试者

    HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)

    陈殷
  • Spring之RequestBody的使用姿势小结

    对上面几种方式有兴趣的可以看一下这篇博文: SpringMVC之请求参数的获取方式

    一灰灰blog
  • 180730-Spring之RequestBody的使用姿势小结

    对上面几种方式有兴趣的可以看一下这篇博文: SpringMVC之请求参数的获取方式

    一灰灰blog
  • SpringMVC系列第2篇:@Controller、@RequestMapping

    用来标注在类上,表示这个类是一个控制器类,可以用来处理 http 请求,通常会和@RequestMapping 一起使用。

    路人甲Java
  • 【网络知识补习】❄️| 由浅入深了解HTTP(六) HTTP消息

    HTTP消息 是服务器和客户端之间交换数据的方式。有两种类型的消息︰ 请求(requests)–由客户端发送用来触发一个服务器上的动作;响应(responses...

    呆呆敲代码的小Y
  • 2018-06-20 HTTP相关知识关于Content-TypePOST常见数据提交类型关于HTTP关于MIME类型

    原文地址:https://blog.csdn.net/woaixiaoyu520/article/details/76690686

    Albert陈凯
  • ContentNegotiation内容协商机制(一)---Spring MVC内置支持的4种内容协商方式【享学Spring MVC】

    不知你在使用Spring Boot时是否对这样一个现象"诧异"过:同一个接口(同一个URL)在接口报错情况下,若你用rest访问,它返回给你的是一个json串;...

    YourBatman
  • Postman之request

    其一个人工作是使用Postman做接口测试,其二我相信老一批的同学也习惯了用接口测试,新一批的小白也会学习Postman,针对这批用户我决定将Postman这个...

    测试小兵
  • 从 http协议角度解析okhttp

    OkHttp 是 Square 公司开源的一款网络框架,封装了一个高性能的 http 请求库。

    开发者
  • python接口自动化(十)--post请求四种传送正文方式(详解)

      post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道...

    北京-宏哥
  • 2018-09-26 四种常见的 POST 提交数据方式四种常见的 POST 提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 ...

    Albert陈凯
  • 四种常见的 POST 提交数据方式

    我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似...

    哲洛不闹
  • 「 面试三板斧 」之 HTTP (上)

    HTTP 在因特网的角色:充当一个信使的角色,干的就是一个跑腿的活,在客户端和服务端之间传递信息,但我们又不能缺少它。

    lucifer210
  • AngularJS跨域问题 ajax 跨域

    从网上下载了一个AngularJS项目,配置启动后发现数据发送不到自己的后台中去,总是提示跨域问题。

    战神伽罗
  • 面试官:观察过 chrome 调试工具的请求体么?Form Data 和 Request Payload 有什么区别?

    这两个截图就是写这篇文章的初衷,微信文章在打开的时候是显示的 Form Data,第二张图是掘金在打开文章发起的请求,当时看到就特奇怪,Form Data 和 ...

    winty
  • 从 HTTP 角度看 Go 如何实现文件提交

    早前写过一篇文章,Go HTTP 请求 QuickStart。当时,主要参考 Python 的 requests 大纲介绍 Go 的 net/http 如何发起...

    波罗学
  • 补习系列-springboot mime类型处理

    MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, ...

    美码师

扫码关注云+社区

领取腾讯云代金券