Transfer-Encoding: chunked
来源:互联网 发布:ubuntu 重置网络设置 编辑:程序博客网 时间:2024/05/28 09:32
通常,HTTP应答消息中发送的数据是整个发送的,Content-Length消息头字段表示数据的长度。
数据的长度很重要,因为客户端需要知道哪里是应答消息的结束,以及后续应答消息的开始。
大部分情况下,服务器返回的HTTP数据头里都包含字段“Content-Length”的,比如:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: image/*;charset=UTF-8
Content-Language: zh-CN
Content-Length: 2904
Date: Wed, 17 Apr 2013 10:15:35 GMT
Set-Cookie: BIGipServerpool_122.224.212.149_8484_AndroidMarket-WEB=1919199424.9249.0000; path=/
客户端可以根据这个“Content-Length”字段,申请这么大小的内存,然后接收数据并处理。
然而,HTTP1.1提供分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。
"分块传输"的机制,HTTP数据头里,包含字段“Transfer-Encoding”的,比如:
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: image/*;charset=UTF-8
Content-Language: zh-CN
Transfer-Encoding: chunked
Date: Wed, 17 Apr 2013 09:54:56 GMT
Set-Cookie: BIGipServerpool_122.224.212.149_8484_AndroidMarket-WEB=1868867776.9249.0000; path=/
如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么,消息体由数量未定的块组成,并以最后一个大小为0的块为结束。
每一个非空的块都以该块包含数据的字节数(字节数以十六进制表示)开始,跟随一个CRLF (回车及换行),然后是数据本身,最后块CRLF结束。在一些实现中,块大小和CRLF之间填充有白空格(0x20)。
最后一块是单行,由块大小(0),一些可选的填充白空格,以及CRLF。最后一块不再包含任何数据,但是可以发送可选的尾部,包括消息头字段。
消息最后以CRLF结尾。
- Transfer-Encoding: chunked
- Transfer-Encoding: chunked
- Transfer-Encoding: chunked
- Transfer-Encoding: chunked
- chunked Transfer-Encoding forbidden
- Transfer-Encoding:chunked 说明
- Transfer-Encoding: chunked
- transfer-encoding: chunked的问题
- 取消掉Transfer-Encoding:chunked
- transfer-encoding:chunked的含义
- 取消掉Transfer-Encoding:chunked
- http协议Chunked transfer encoding
- 取消掉Transfer-Encoding:chunked
- transfer-encoding:chunked的含义
- transfer-encoding:chunked的含义
- Transfer-Encoding: chunked 的含义
- transfer-encoding:chunked的含义
- transfer-encoding:chunked的含义
- jQuery radio获取设置值
- 小议SQL Server主键和自动编号问题
- 如何将数据库中的表导入到PowerDesigner中
- java字符集的欺骗性
- 线性分类Linear Classification
- Transfer-Encoding: chunked
- ubuntu 12.10 上 android 编译环境搭建
- 用busybox制作根文件系统
- 深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题
- linux嵌入式编程高手历程系列1-前言
- 如何查询一个库文件属于哪个rpm包
- 如何在Linux使用Eclipse + CDT开发C/C++程序? (OS) (Linux) (C/C++) (gcc) (g++)
- <DOCTYPE html> 是什么?
- No rule to make target `out/target/product/generic/obj/lib/liblog.so'