news 2026/7/19 15:54:54

【2018-07-06】[转]HTTP协议的chunked编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【2018-07-06】[转]HTTP协议的chunked编码

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2018-07-06| 标题:[转]HTTP协议的chunked编码分类:编程 |标签:http-chunked


HTTP chunked传输编码简单笔记

本文参考

《 https://www.cnblogs.com/jiu0821/p/5833759.html 》

《 https://blog.csdn.net/u013401853/article/details/53432408 》

《 https://blog.csdn.net/u014558668/article/details/70141956 》

一般情况HTTP的Header包含Content-Length域来指明报文体的长度。如:

有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消息长度,服务器一般使用chunked编码。

在进行Chunked编码传输时,在回复消息的Headers有transfer-coding域值为chunked,表示将用chunked编码传输内 容。使用chunked编码的Headers如下(可以利用FireFox的FireBug插件或HttpWatch查看Headers信 息,HttpWatch还可以查看chunked的个数):

分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。

通常,HTTP应答消息中发送的数据是整个发送的,Content-Length消息头字段表示数据的长度。数据的长度很重要,因为客户端需要知道哪里是应答消息的结束,以及后续应答消息的开始。然而,使用分块传输编码,数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。通常数据块的大小是一致的,但也不总是这种情况。

在进行chunked编码传输时,在回复消息的头部有Transfer-Encoding: chunked

编码使用若干个chunk组成,由一个标明长度为0的chunk结束。每个chunk有两部分组成,第一部分是该chunk的长度,第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的chunk中的内容是称为footer的内容,是一些没有写的头部内容。

chunk编码格式如下:

[
][
][
][
][
][
]

chunk size是以十六进制的ASCII码表示,chunk数据以0长度的chunk块结束。

例子

HTTP/1.1 200 OK

Content-Type: text/plain

Transfer-Encoding: chunked

25

This is the data in the first chunk

1C

and this is the second one

3

con

8

sequence

0

编码应答的解释

前两个块的数据中包含有显式的
字符。

"This is the data in the first chunk
" (37 字符 => 十六进制: 0x25)

"and this is the second one
" (28 字符 => 十六进制: 0x1C)

“con” ( 3 字符 => 十六进制: 0x03)

“sequence” ( 8 字符 => 十六进制: 0x08)

应答需要以0长度的块( "0
".)结束。

解码的数据

This is the data in the first chunk

and this is the second one

consequence

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 15:53:13

3分钟学会SVGcode:免费开源工具将位图秒变矢量图

3分钟学会SVGcode:免费开源工具将位图秒变矢量图 【免费下载链接】SVGcode Convert color bitmap images to color SVG vector images. 项目地址: https://gitcode.com/gh_mirrors/sv/SVGcode 你是否曾经因为放大Logo时出现模糊边缘而烦恼?或者在…

作者头像 李华
网站建设 2026/7/19 15:53:01

群晖NAS USB网卡驱动终极指南:3步免费升级2.5G/5G/10G网络

群晖NAS USB网卡驱动终极指南:3步免费升级2.5G/5G/10G网络 【免费下载链接】r8152 Synology DSM driver for Realtek RTL8152/RTL8153/RTL8156 based adapters 项目地址: https://gitcode.com/gh_mirrors/r8/r8152 还在为群晖NAS千兆网口的速度限制而苦恼吗&…

作者头像 李华
网站建设 2026/7/19 15:52:03

AutoDingding钉钉自动打卡:让你的考勤从此无忧无虑

AutoDingding钉钉自动打卡:让你的考勤从此无忧无虑 【免费下载链接】AutoDingding 自动打卡(无人值守方案,非目标应用数据修改方案!) 项目地址: https://gitcode.com/gh_mirrors/au/AutoDingding 还在为每天早起…

作者头像 李华
网站建设 2026/7/19 15:48:31

如何安装Jellium Desktop?跨平台完整指南(Linux/Windows/macOS)

如何安装Jellium Desktop?跨平台完整指南(Linux/Windows/macOS) 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellium-desktop 想要在桌面上享受Jellyf…

作者头像 李华
网站建设 2026/7/19 15:47:48

通往具身智能之路——TVA协同进化机制(17)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

作者头像 李华