是默认情况下隐式保持活动的HTTP / 1.1请求?

时间:2011-10-28 09:40:57

标签: http

解决了 :粘贴这里的字节让我意识到我在块之间缺少空行......


HTTP / 1.1请求是否需要指定Connection: keep-alive标头,或者默认情况下是否始终保持活动状态?

This guide让我觉得它会;当我的http服务器获得1.1请求时,除非明确接收Connection: close标头,否则它是保持活动状态。

我问,因为我abhttperf的不同客户行为让我发疯到不知道我对这个人的理智......


以下是httperf --hog --port 42042 --print-reply body发送的内容:

GET / HTTP/1.1
User-Agent: httperf/0.9.0
Host: localhost

这是我服务器的回复:

HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Length: 18

12
Hello World      1
0

httpref立即打印出响应,但随后只是坐在那里,双方都没有关闭连接并且httpref没有退出。

我的错在哪里?

1 个答案:

答案 0 :(得分:22)

来自RFC 2616, section 8.1.2

  

HTTP / 1.1和早期版本的HTTP之间的显着差异是持久连接是任何HTTP连接的默认行为。也就是说,除非另有说明,客户端应该假设服务器将保持持久连接,即使在服务器发出错误响应之后也是如此。