我在C ++中使用curl。 我在同一个句柄上执行所有请求,因此curl始终使用相同的连接。 但是在服务器返回404并且很快就会发出下一个请求的情况下,curl会使用新连接。 有特殊原因吗? 在这种情况下,有没有办法将连接配置为一致?
答案 0 :(得分:1)
可能没有curl关闭连接,它是Web服务器... 我的观察是,如果响应代码是4xx,那么无论keep-alive设置如何,大多数Web服务器都会关闭连接。例如:
$ telnet myserver 80
Trying myserver...
Connected to myserver.
Escape character is '^]'.
GET /foo HTTP/1.1
Host: myserver:80
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP/1.1 401 [ISS.0084.9004] Access Denied
Content-Type: text/html; charset=UTF-8
Connection: close
WWW-Authenticate: Basic realm="Integration Server", encoding="UTF-8"
Content-Length: 48
<h4>Access Denied</h4>
Connection closed by foreign host.
这里的提示是&#34;连接由外国主持人关闭。&#34;
答案 1 :(得分:0)
只有一件事情发生在我面前 - 查看并查看404响应中包含的标题。可能会发生服务器发出Connection: close
标头,即:
# response example copied from http://php.net/manual/en/eventhttp.bind.php
HTTP/1.1 404 Not Found
Content-Type: text/html
Date: Wed, 13 Mar 2013 04:14:41 GMT
Content-Length: 149
Connection: close
curl库可能会遵守