HTTP协议首部字段transfer-encoding与content-length差异
来源:互联网 发布:帝国cms flash网站 编辑:程序博客网 时间:2024/05/29 12:50
1. 什么问题
最近在写一个http代理,主要作用是接收客户端(JMeter)的http请求报文,解析报文后加密,发送到服务器。接收服务器响应,拼装http响应报文,响应客户端(JMeter)。但是JMter一直提示
org.apache.http.MalformedChunkCodingException: Bad chunk header
2. 原因
响应客户端(JMeter)http报文实体首部使用的是transfer-encoding分块传输,但是http报文实体内容格式使用的content-length描述的实体内容。导致客户端(JMeter)解析有问题,以下是正确的报文格式。
content-length首部字段描述的主体内容格式。
HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/json;charset=UTF-8Content-Length: 252Date: Fri, 17 Jun 2016 02:30:33 GMT{"respCode":"999","respMessage":"失败"}
transfer-encoding首部字段描述的主体内容格式
HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/plainTransfer-Encoding: chunkedDate: Fri, 17 Jun 2016 02:30:33 GMT25This is the data in the first chunk1Aand this is the second one0
3. 解决的方法
使用transfer-encoding首部字段描述的主体内容格式。
4. 引出的知识点
两者之间的区别(cr lf统一表示:回车换行)
- content-length响应报文示例解释
HTTP/1.1 200 OK (什么协议/版本号 状态码 状态描述)Server: Apache-Coyote/1.1(服务:服务器名称)Date: Fri, 17 Jun 2016 02:30:33 GMT(日期)Content-Type: text/json;charset=UTF-8(实体内容类型:文本/JOSN格式;字符集)Content-Length: 252(实体内容长度:252)(备注:Content-Type和Content-Length属于实体首部){"respCode":"999","respMessage":"失败"}(实体主体)
- transfer-encoding响应报文示例解释
HTTP/1.1 200 OK(什么协议/版本号 状态码 状态描述, cr lf)Server: Apache-Coyote/1.1(服务:服务器名称, cr lf)Content-Type: text/plain(实体内容类型:文本/纯文本格式;字符集, cr lf)Transfer-Encoding: chunked(Chunked分块编码传输内容, cr lf)Date: Fri, 17 Jun 2016 02:30:33 GMT(日期, cr lf) cr lf25(第一块数据内容十六进制的大小 cr lf)This is the data in the first chunk(第一块数据内容, cr lf)1A(第二块数据内容十六进制的大小, cr lf)and this is the second one(第二块数据内容, cr lf)0(0表示报文截止的标志, cr lf)
两者的区别主要是在主体实体之间有差异。
- transfer-encoding与content-length的含义:
content-length:首部指示出报文中实体主体的字节大小(大小单位字节),注意主体实体内容的字节数与content-length字段的字节数不匹配会导致解析失败)
transfer-encoding:用于高手接收方已经用分块编码对报文进行了传输编码,分块编码是解决服务器动态创建内容,无法知道主体的长度。
1 0
- HTTP协议首部字段transfer-encoding与content-length差异
- http协议content-encoding & transfer-encoding
- http协议content-encoding & transfer-encoding
- http协议content-encoding & transfer-encoding
- 区分Transfer-Encoding,TE,Content-Encoding,Accept-Encoding四个首部字段
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- http返回头中content-length与Transfer-Encoding: chunked的问题
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- http协议中的头部字段:Transfer-Encoding
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 之种种
- Nginx与HTTP协议 content-length
- Nginx与HTTP协议,content-length
- Http协议Content-Length
- http协议Chunked transfer encoding
- Hive
- Ubuntu 14.04 安装 Skype
- 操作系统ucore lab3实验报告
- C#设计模式—装饰模式
- 操作系统ucore lab4实验报告
- HTTP协议首部字段transfer-encoding与content-length差异
- 操作系统ucore lab5实验报告
- 数据结构实验之二叉树一:树的同构
- 算法の动态规划poj1837
- 操作系统ucore lab6实验报告
- linux PATH环境变量
- 操作系统ucore lab7实验报告
- 操作系统ucore lab8实验报告
- 读取assets目录下面的图片