Content-Type详解
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详解相关推荐
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...
- Elasticsearch中字段类型(Field Type)详解
ElasticSearch 7.7 字段类型(Field datatype)详解 字符串, object, 数值, 日期, 数组, 0x00 字符串: text, keyword 5.0以后,stri ...
- 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 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...
- mysql explain type_MySQL explain type详解
SQL性能调优的依据就是explain,其中type对结果影响最大,本文详细介绍了一下各个不同的type所表示的意义 ps: 网上有很多文档,但是有的并不能复现,所以再仔细研究了一下,并实验了结果 版 ...
- Android Content Provider详解-实现ContentProvider MIME 类型
转载至:http://www.2cto.com/kf/201212/179560.html 实现ContentProvider MIME 类型 ContentProvider 有两个方法返回MIM ...
- Content Provide详解
Content Provider 属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问 ...
- type const mysql_Mysql Explain之type详解
select version():5.7.21 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SQL 语句进行分析, 并输出 SQL 执行的详细信息, 以供开发人员针对性优化. 例如分析一 ...
- java type 简书_Java中的Type详解
ParameterizedType 参数化类型的使用 package com.keytop.att; /** * 实体类 * Created by fengwenhua on 2017/4/25. * ...
- Elasticsearch搜索类型(query type)详解
es在查询时,可以指定搜索类型为QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH.那么这4种搜索 ...
- salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...
最新文章
- 30、Arrays工具类
- 软件测试数据怎么找,作为软件测试人员怎么能快速找到bug
- synchronized和ReentrantLock区别
- zip压缩与解压缩示例
- html post前md5加密,post提交及MD5加密
- 敏捷无敌之重任在肩(7)
- java基础学习-(2)堆和栈
- Generator的异步编程
- Debian 8 时间同步
- MYSQL 数据库 创建库和删除库的语句
- 前端第二天 表格/表单和H5
- python爬虫selenium-前程无忧
- Python教程系列(一)—— Python基础教程之导言
- note pro 国际版_改装Redmi Note 8 Pro —一次冒险
- 【Spring Security入门教学】
- 【VBS教程3】:VBS如何激活指定窗口
- UnknownHostException: xxx异常
- 游戏设计模式---命令模式
- 软件实施工程师面试总结
- 图片添加文字水印,自动换行,左右留白