Content-Type是什么?

在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。

Post请求的内容放置在请求体中,Content-Type定义了请求体的编码格式。数据发送出去后,还需要接收端解析才可以。接收端依靠请求头中的Content-Type字段来获知请求体的编码格式,最后再进行解析。

Content-Type的格式

Content-Type:type/subtype ;parameter

type:主类型,任意的字符串,如text,如果是*号代表所有;
subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;
parameter:可选参数,如charset,boundary等。
例如:

  • Content-Type: text/html;
  • Content-Type: application/json;charset:utf-8;
  • Content-Type: application/x-www-form-urlencoded;charset:utf-8;

Post请求中常见的Content-Type类型的结构

(1)application/x-www-form-urlencoded

这是浏览器原生的form表单类型,或者说是表单默认的类型。

下面是一个请求实例:

请求报文:

可以看得出,post将请求参数以key1=value1&key2=value2这种键值对的方式进行组织,并放入到请求体中。其中中文或某些特殊字符,如"/"、","、“:" 等会自动进行URL转码。

(2)application/json

现在绝大部分的请求都会以json形式进行传输,post会将序列化后的json字符串直接塞进请求体中。

下面是一个请求实例:

请求报文:(postman查看请求报文,点击Send下面一行的code,然后点击HTTP即可)

可以看到,请求体中就是Json字符串。

(3)multipart/form-data

用于在表单中上传文件,先看一个请求实例:

请求报文:

可以看得出,首先随机生成了一个boundary字段,这个boundary用来分割不同的字段。

一个请求的参数,会以boundary开始,然后是附加信息(参数名称,文件路径等),再空一行,最后是参数的内容。

请求体最后再以boundary结束。

当然,response中也会有Content-Type为multipart/form-data的响应头。如果此时是导出文件,则响应头还需要添加一个

Content-Disposition:attachment;fileName=文件.后缀

注:Content-Disposition是Content-Type的扩展,告诉浏览器弹窗下载框,而不是直接在浏览器里展示文件。因为一般浏览器对于它能够处理的文件类型,如txt,pdf 等,它都是直接打开展示,而不是弹窗下载框。


接收端如何根据Content-Type解析数据

这里以SpringBoot接收前端请求为例,请移步到我的另外一篇文章【SpringBoot】SpringBoot接收请求的n种姿势

Content-Type详解相关推荐

  1. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...

  2. Elasticsearch中字段类型(Field Type)详解

    ElasticSearch 7.7 字段类型(Field datatype)详解 字符串, object, 数值, 日期, 数组, 0x00 字符串: text, keyword 5.0以后,stri ...

  3. Oracle PL/SQL存储过程对象类型Object type详解 create type obj_type as object, create table tab_name of obj_type

    原 oracle 对象类型 object type 置顶 2011年06月13日 18:00:00 oypj2010 阅读数:3453 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...

  4. mysql explain type_MySQL explain type详解

    SQL性能调优的依据就是explain,其中type对结果影响最大,本文详细介绍了一下各个不同的type所表示的意义 ps: 网上有很多文档,但是有的并不能复现,所以再仔细研究了一下,并实验了结果 版 ...

  5. Android Content Provider详解-实现ContentProvider MIME 类型

    转载至:http://www.2cto.com/kf/201212/179560.html 实现ContentProvider MIME 类型   ContentProvider 有两个方法返回MIM ...

  6. Content Provide详解

     Content Provider 属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问 ...

  7. type const mysql_Mysql Explain之type详解

    select version():5.7.21 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SQL 语句进行分析, 并输出 SQL 执行的详细信息, 以供开发人员针对性优化. 例如分析一 ...

  8. java type 简书_Java中的Type详解

    ParameterizedType 参数化类型的使用 package com.keytop.att; /** * 实体类 * Created by fengwenhua on 2017/4/25. * ...

  9. Elasticsearch搜索类型(query type)详解

    es在查询时,可以指定搜索类型为QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH.那么这4种搜索 ...

  10. salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...

最新文章

  1. 30、Arrays工具类
  2. 软件测试数据怎么找,作为软件测试人员怎么能快速找到bug
  3. synchronized和ReentrantLock区别
  4. zip压缩与解压缩示例
  5. html post前md5加密,post提交及MD5加密
  6. 敏捷无敌之重任在肩(7)
  7. java基础学习-(2)堆和栈
  8. Generator的异步编程
  9. Debian 8 时间同步
  10. MYSQL 数据库 创建库和删除库的语句
  11. 前端第二天 表格/表单和H5
  12. python爬虫selenium-前程无忧
  13. Python教程系列(一)—— Python基础教程之导言
  14. note pro 国际版_改装Redmi Note 8 Pro —一次冒险
  15. 【Spring Security入门教学】
  16. 【VBS教程3】:VBS如何激活指定窗口
  17. UnknownHostException: xxx异常
  18. 游戏设计模式---命令模式
  19. 软件实施工程师面试总结
  20. 图片添加文字水印,自动换行,左右留白

热门文章

  1. IT专业大学生迷茫些什么
  2. chartxy 柱状图_ChartControl 折线图 柱状图
  3. STM32+esp8266,让你的STM32开发板连接网络-----esp8266
  4. Cepton, Inc.敲响纳斯达克开市钟
  5. 勒索病毒敲响网络安全警钟
  6. html 人物介绍 轮播,jQuery卡通人物介绍卡牌轮播切换代码
  7. Linux终端连接redis数据库【重点】
  8. Spring配置Druid数据源
  9. 棕榈学院Python课程回顾——K线图绘制
  10. 弘辽科技:直通车选几个词比较好?关键词怎么去选择?