估计回复 HTTP 标头的大小

估计回复 HTTP 标头的大小

我正在尝试通过基本套接字连接使用 HTTP GET 请求下载文件。因此,我必须指定要从套接字读取多少字节的数据。但是,我很难确定服务器要回复的数据量(以字节为单位)。我知道服务器发送的回复中有一个“Content-Length”字段,但它给出了实际数据的大小(没有 http 标头)。
有没有办法获取服务器发送的 HTTP 标头的确切大小,或者需要估算?
(我这样做是为了在移动网络上下载,其中每一点数据在时间和金钱方面都很重要,所以我不想对标头大小进行不必要的更大估计。)

答案1

你不会读取固定数量的字节。你读取尽可能多的字节(或直到你中止),直到你达到目标END OF HEADER(对于 HTTP 来说,据\n\r\n我所知)。尽管出于安全原因,实际的标头长度是受 HTTP 服务器限制

标准本身对每个标头字段名称或值的大小以及标头数量没有限制。但是大多数服务器、客户端和代理软件出于实际和安全原因施加了一些限制。例如,Apache 2.3 服务器默认将每个标头大小限制为 8190 字节,单个请求最多可以有 100 个标头。

在这种通信中依赖固定大小的缓冲区将是一个很大的错误。您的缓冲区需要动态增长。您甚至不应该Content-Length在接收消息正文时依赖字段的正确性。

相关内容