繁体   English   中英

如果没有Content-Length或Transfer-encoding,对GET请求的HTTP响应会发生什么?

[英]What happens in HTTP response to a GET request without Content-Length or Transfer-encoding?

如果对GET请求的响应没有Content-Length或Transfer-encoding:chunked字段,会发生什么? 客户如何知道消息何时结束?

RFC 7230第3.3.3节包含一个很好的查找邮件正文大小的条件清单。 基本上它说答案取决于状态代码是什么。 相关条件是#1和#7。

“1.任何响应...具有1xx(信息),204(无内容)或304(未修改)状态代码始终由标题字段后的第一个空行终止,而不管标题字段中是否存在标题字段。消息,因此不能包含消息体。“

“7.否则,这是一条没有声明消息体长度的响应消息,因此消息体长度由服务器关闭连接之前接收的八位字节数决定。”

还值得知道消息可能在身体部分结束后继续。 RFC 7230第4.4节定义了一个预告片功能,其中有效载荷可以跟随第二组mime标头。 如果存在,则消息结束。

根据规范

消息正文的长度由以下之一确定(按优先顺序排列):

  • [...]
  • 否则,这是没有声明的消息体长度的响应消息,因此消息体长度由服务器关闭连接之前接收的八位字节数确定。

客户端需要检测连接是否已关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM