当使用分块的 HTTP 传输编码时,为什么服务器需要以字节为单位写出块大小和后续的块数据以 CRLF 结尾?
这不会使发送二进制数据“CRLF-unclean”并且该方法有点多余吗?
如果数据在某处有 0x0A 后跟 0x0D 怎么办(即这些实际上是数据的一部分)?那么客户端是否期望遵守在块头部明确提供的块大小,或者在它在数据中遇到的第一个 CRLF 时阻塞?
到目前为止,我对预期客户端行为的理解是简单地获取服务器提供的块大小,继续下一行,然后从以下数据(CRLF 或其中没有 CRLF)中准确读取此字节数,然后跳过 CRLF跟踪数据并重复该过程,直到不再有块。这是合规行为吗?如果是这样,那么每个数据块之后的 CRLF 有什么意义呢?可读性?
我已经对此进行了一些网络搜索,并且还阅读了一些 HTTP 1.1 规范,但我似乎无法找到明确的答案。