HTTP/1.1 · BYTE LAB

Content-Length 数的是字节

输入看起来“一样长”的文字,看它们在 UTF-16、Unicode、UTF-8、gzip 和 chunked 中如何变成不同的长度。

量清 CONTENT
划准 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 读取精确的字节数。

content 与 message body 的边界

外壳用于这一跳的定界,不是表示数据

HTTP content

本例为 UTF-8 文本字节。它是应用真正要接收的数据。

HTTP/1.1 message body

不分块时,message body 就是 content,两者字节数相同。

记住计数点

Content-Length 数的是最终 content 的字节,不是 JavaScript 字符串的 length