固定长度:先承诺,再读取
Content-Length 数的是编码后的字节。写小会留下字节,写大则要等待尚未到达的字节。
HTTP 字节装配台 · 边界实验
同一段中文和英文,换一种边界规则,线路上的“结束”信号就完全不同。先改内容,再故意把长度写错,看解析器究竟会少读、等待,还是直接拒绝。
调整输入和边界规则时,线路表示会立即重算。点击“逐段运行解析器”观察读取过程。
Content-Length 数的是编码后的字节。写小会留下字节,写大则要等待尚未到达的字节。
每块自带十六进制长度,最后以 0 CRLF CRLF 收尾。它只属于 HTTP/1.1。
HTTP/2/3 依靠帧边界与 END_STREAM。即使帧能读完,声明的总长度仍必须和内容总量一致。
实验提示:真实服务不应“猜测”冲突消息的意思。代理与应用若选择了不同边界,后续字节可能被误当成下一条请求,因此成熟实现会尽早拒绝含糊输入。