解决了 :粘贴这里的字节让我意识到我在块之间缺少空行......
HTTP / 1.1请求是否需要指定Connection: keep-alive
标头,或者默认情况下是否始终保持活动状态?
This guide让我觉得它会;当我的http服务器获得1.1请求时,除非明确接收Connection: close
标头,否则它是保持活动状态。
我问,因为我ab
和httperf
的不同客户行为让我发疯到不知道我对这个人的理智......
以下是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
没有退出。
我的错在哪里?
答案 0 :(得分:22)
HTTP / 1.1和早期版本的HTTP之间的显着差异是持久连接是任何HTTP连接的默认行为。也就是说,除非另有说明,客户端应该假设服务器将保持持久连接,即使在服务器发出错误响应之后也是如此。