没有内容长度标头的 HTTP 保持活动连接是否可能?

Luk*_*sma 9 http http-content-length http-headers

我知道在 HTTP 1.0 中,响应的内容通过关闭连接终止

在 HTTP 1.1 中,引入了保持活动连接,在单个 TCP 连接中启用多个请求和响应。

当通过同一个连接发送多条消息时,需要有一种机制来定义一条消息在哪里结束,下一条消息从哪里开始。

通过测试,我发现当我在响应中设置content-length 标头时这是有效的。通过知道内容长度,客户端知道什么时候完全接收到内容并且可以解析下一个响应。

我的问题是:

是否可以在不设置内容长度标头的情况下在保持活动连接中发送多个响应?

如果是,如何?

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

Luk*_*sma 9

传输编码头就是我一直在寻找。

通过将 transfer-encoding 设置为chunked,可以省略 Content-Length 标头。

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

这使得保持活动连接成为可能,并且在开始发送时仍然发送长度未知的消息。