没有 content-length 头信息,是否仍可使用 HTTP keep-alive 连接?

9
我知道在HTTP 1.0中,响应的内容通过关闭连接来终止
在HTTP 1.1中,keep-alive连接被引入,允许在单个TCP连接中进行多个请求和响应。
当多条消息在同一连接上发送时,需要有一种机制来定义一条消息的结束和下一条消息的开始。
通过测试,我发现当我在响应中设置content-length头时,这个机制可以正常工作。通过知道内容长度,客户端就知道何时完全接收内容并可以解析下一个响应。
我的问题是: 在不设置content-length头的情况下,是否可能在keep-alive连接中发送多个响应? 如果可以,如何实现?

为了澄清:我正在考虑当开始将响应发送到客户端时不知道响应长度的情况,并且我想知道关闭连接是否是实现这一点的唯一方法。

1个回答

11

传输编码头是我在寻找的内容。

将传输编码设置为chunked,可以省略Content-Length标头。

在分块传输编码中,消息可以被分成多个已知长度的块发送。要终止消息,请发送一个长度为零的块。

这使得保持连接并在开始发送消息时无法确定长度的情况下仍然可以发送消息成为可能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接