3

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

4

2 回答 2

1

可能不是 curl 关闭连接,而是 Web 服务器...我的观察是,如果响应代码为 4xx,则无论保持活动设置如何,大多数 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.

这里的提示是“连接被外国主机关闭”。

于 2015-02-09T10:04:19.537 回答
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 库可能会遵守

于 2013-07-11T09:38:08.190 回答