在 HTTP/1.1 中,分块传输编码(Chunked Transfer Encoding)是一种允许服务器在不知道内容长度的情况下,逐块发送响应的机制。为了确保分块的响应可以被顺序接收,HTTP 协议定义了一些规则和机制。
在分块传输编码中,响应体被分成多个块,每个块都有自己的大小。每个块的格式如下:
<块大小(以十六进制表示)>\r\n
<块数据>\r\n
最后一个块的大小为 0,表示响应的结束。
HTTP 协议通过以下几个方面来确保分块响应的顺序接收:
以下是一个简单的分块响应的示例:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/plain
4\r\n
Wiki\r\n
5\r\n
pedia\r\n
0\r\n
\r\n
在这个示例中:
客户端在处理分块响应时,通常会使用一个循环来读取数据,直到接收到结束块。以下是一个伪代码示例:
while (true) {
// 读取块大小
let chunkSize = readChunkSize(); // 读取十六进制大小
if (chunkSize === 0) {
break; // 结束块
}
// 读取块数据
let chunkData = readChunkData(chunkSize);
processChunk(chunkData); // 处理块数据
}
领取专属 10元无门槛券
手把手带您无忧上云