需求
分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。
客户端给服务器发送数据也一样可以使用 Chunk 传输,比如,客户端要上传数据,但是数据没有完全生成,通过chunk分块传输,就可以一边生成数据一边上传,典型的比如:上传录音。
服务端接收数据
1 |
|
postman一次发送body,如下图:
客户端分块发送
- chunk 需要加入头:
Transfer-Encoding: chunked
- 每个 chunk 块的格式都是:
[chunk size][CRLF][chunk data][CRLF]
- 结束 chunk 块是0,也就是:
[0][CRLF][CRLF]
举例:
发送一个请求,body 内容为 12HELLO
,其中 12
是一个 chunk 包,HELLO
是一个 chunk 包。
分块请求体:
1 | POST /test/upload HTTP/1.1\r\n |
原始数据:
1 | 504f5354202f746573742f75706c6f616420485454502f312e310d0a |