我理解在HTTP 1.0中,the content of a response is terminated by closing the connection。
在HTTP 1.1中,引入了keep-alive connections,在单个TCP连接中启用了多个请求和响应。
当通过同一连接发送多条消息时,需要有一种机制来定义一条消息的结束位置以及下一条消息的开始。
通过测试,我发现当我在响应中设置content-length header时这是有效的。通过了解内容长度,客户端知道内容何时被完全接收并且可以解析下一个响应。
我的问题是:
是否可以在保持活动连接中发送多个响应,而无需设置内容长度标题?
如果是,怎么样?
为了澄清:我正在考虑在开始将响应的长度发送到客户端时不知道响应的长度的情况,并且我想知道关闭连接是否是实现它的唯一方法。
答案 0 :(得分:3)
我正在寻找Transfer-Encoding标题。
通过将transfer-encoding设置为chunked
,可以省略Content-Length标头。
在分块传输编码中,可以在已知长度的多个块中发送消息。要终止消息,将发送长度为零的块。
这使得保持连接成为可能,并且在开始发送时仍然会发送长度未知的消息。