获取错误404时,curl keep-alive无法正常工作

时间:2013-07-10 13:33:01

标签: curl

我在C ++中使用curl。 我在同一个句柄上执行所有请求,因此curl始终使用相同的连接。 但是在服务器返回404并且很快就会发出下一个请求的情况下,curl会使用新连接。 有特殊原因吗? 在这种情况下,有没有办法将连接配置为一致?

2 个答案:

答案 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库可能会遵守