我试图理解为什么在以下设置中单个 HTTP 响应被分成两部分:
- 请求的资源受到服务器端 HTTP 摘要认证的保护。
- 使用 TLS 1.0 进行通信。
当客户端请求资源时,服务器响应分为两部分:第一部分(解密后)仅包含 HTTP 标头(除其他外):
内容长度:1297和
WWW 身份验证:...第二部分包含正文消息。
最重要的是:第一部分仅包含标头,并带有 PSH 标志,这导致我的应用程序抛出异常,因为 Content-Length > 0,但没有正文消息。第二部分的最后一个数据包没有 PSH 标志。
服务器的这种行为正确吗?
答案1
您的应用程序可能不知道 TCP 是一种基于流而非基于数据包的协议。无法保证您将标头和正文放在一个数据包中,甚至无法保证您将整个标头放在一个数据包中。
除此之外,响应包含两个主要部分:内容和有关内容的信息(类型、长度、最后更改...)。有几种方法可以区分这些部分,其中一种方法是将其拆分为包含元信息的标头和包含内容的正文。