HTTP/1.1 · BYTE LAB
Content-Length 数的是字节
输入看起来“一样长”的文字,看它们在 UTF-16、Unicode、UTF-8、gzip 和 chunked 中如何变成不同的长度。
量清 CONTENT
划准 BODY 边界
划准 BODY 边界
JavaScript length
0
UTF-16 代码单元
Unicode 字符
0
码点数
用户看到的字符
0
字素(辅助对比)
UTF-8
0
压缩前字节
Content-Length
0
无压缩 content
UTF-8 字节格
每张纸片是 1 个 Unicode 码点
1 字节
2 字节
3 字节
4 字节
HTTP/1.1 线上块结构
开启 chunked 后,观察传输外壳
当前不分块
消息体直接承载 content,接收方可以按 Content-Length 读取精确的字节数。
0 Bcontent 字节
0 B分块外壳
0 Bmessage body 总长
content 与 message body 的边界
外壳用于这一跳的定界,不是表示数据
HTTP content
本例为 UTF-8 文本字节。它是应用真正要接收的数据。
HTTP/1.1 message body
不分块时,message body 就是 content,两者字节数相同。
记住计数点
Content-Length 数的是最终 content 的字节,不是 JavaScript 字符串的 length。