快速提问 - HTTP 响应的状态行是否有最大大小?
在 RFC 中我找不到这些信息,就像这样:
状态行 = HTTP 版本 SP 状态代码 SP 原因短语 CRLF
据此,我可以假设:
- HTTP 版本通常为 8 字节(例如
HTTP/1.1
) - 状态码为 3 个字节
- 2 个空格 + CRLF 为 4 个字节
- Reason-Phrase -> 根据 RFC,最长的是
Requested range not satisfiable
31 字节
这将是 46 个字节的总和。
这个假设是正确的还是我错过了什么?
更新:
由于下面的答案,我只想说明我的问题:
我正在使用来自服务器的 TCP 消息解析某种日志文件。现在有一些我不关心的随机数据和一些我想阅读的 HTTP 消息。现在我得到的所有数据都解析为\r\n
找到状态行。因为我需要假设我的标头被拆分为几个 TCP 包,所以我只是缓冲所有数据并解析它。
如果标题状态行没有最大大小,我需要缓冲所有数据,直到下一次\r\n
发生。在最坏的情况下,这意味着我保存了千字节而不是千字节的随机数据,因为它可能(但很可能不会)是标题状态行的一部分。
或者,在这种情况下,解析 HTTP 版本字符串而不是 CRLF 是否更合适?