如果响应具有正文/可以具有正文(即状态代码不是204或304),则它应该在响应头中始终具有内容长度或传输编码。在规范中它不是很清楚。
在我的场景中,我有一个没有内容长度或转移编码标题的正文,因此卷曲会一直等待no chunk, no close, no size. Assume close to signal end
,而其他客户端(如邮递员)正在获取内容而不会挂起。
答案 0 :(得分:3)
Transfer-Encoding 是HTTP / 1.1的补充。所以,这个版本的协议似乎与此相关。
它说明了Content-Length
:
除非第4.4节中的规则禁止,否则只要在传输之前确定消息的长度,就应该发送它。
这清楚地表明不需要发送。
使用Transfer-Encoding
标准状态:
Transfer-Encoding通用标头字段指示已对邮件正文应用了哪种(如果有)转换类型,以便在发件人和收件人之间安全地进行转换。
如果没有应用传输编码,这允许省略头字段。
从以下内容可以看出:两个标题可能在回复中有效遗漏。
在您的情况下,curl
告诉它它的作用:它正在等待远程端关闭连接以了解数据已被完全接收。
您应该提供-v
的卷曲标记和相关通信,以便更深入地了解为什么其他工具可以更好地了解为什么在 EOF 之前没有更多数据遇到了。
答案 1 :(得分:2)
RFC 7230对此有一个非常详细的描述(参见Section 3.3.3)。特别是最后一点:
- 否则,这是一条没有声明消息体长度的响应消息,因此消息体长度由服务器关闭连接之前收到的八位字节数决定。
醇>