每次都C++ cURL "empty reply from server"
C++ cURL "empty reply from server" every time
我正在尝试编写一个C++程序,以使用cURL从网站读取。 我已经开始使用 cURL 示例 simple.c 中的代码。 如果我完全使用该代码,无论我尝试访问哪个 URL,我都会收到错误 #52:"来自服务器的空回复"。 这适用于我尝试的任何 URL。 如果我从命令行使用 cURL,它似乎工作正常。
我的程序的详细响应是:
*About to connect() to www.google.com port 80 (#0)
* Trying 74.125.91.99...* connected
*connected to www.google.com (74.125.91.99) port 80 (#0)
>GET / HTTP/1.1
Host: www.google.com
Accept: */*
* Empty reply from server
* Connection #0 to host www.google.com left intact
* server returned nothing (no headers, no data)
*Closing connection #0
代码为:
CURL *curl;
CURLcode res;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
服务器的空回复"意味着libcurl在发送请求后没有收到来自服务器的任何响应。在HTTP中,每个请求总是得到一些东西,所以这甚至没有用HTTP响应,因此是一个相当严重的错误。
你使用了一个非常旧的libcurl,所以你可能遇到了当时存在的错误。
造成这种情况的其他可能原因是您的网络/设置中的某些东西阻止了它的工作,例如防火墙。
我浪费了几个小时来调试来自 curl 的空响应,所以我在这里分享,希望能防止同样的事情发生在其他人身上。
我注意到 OPTIONS 调用在我的浏览器和我的机器上的 curl 中都返回了"来自服务器的空回复"错误,但从同事那里工作正常。 当我尝试远程登录到 Web 服务器上的端口 80 时,在键入"OPTIONS/path/to/resource HTTP/1.1"行后,只要我按 Enter 键,连接就会立即关闭。 正在执行"lsof -i |grep telnet"(在键入选项行之前,在打开telnet会话的情况下),我看到我的telnet会话是本地的,而不是我指定的服务器。 我知道当时发生了一些非常奇怪的事情。 原来这是因为我安装了Cisco AnyConnect VPN软件。 VPN不需要运行 - 只需安装它就足以拦截我的流量。 讨厌。 谷歌搜索了一下这个页面,其中讨论了更多关于这个问题的信息:
http://www.bennadel.com/blog/2559-cisco-anyconnect-vpn-client-may-block-cors-ajax-options-requests.htm
所以,短话是:它可能不是服务器...本地内容可能会拦截和阻止您的网络流量。
- 为什么"(!v.empty())"比"(v.size() >0)"好?
- DirectX11 IASetVertexBuffers with nullptrs or empty buffers
- 为什么C++标准库容器函数 empty() 标记为 [[nodiscard]]?
- list::empty() 多线程行为?
- Qt3D:"Mesh is empty, nothing to load"消息
- 使用迭代器成员函数是否仅适用于某些向量类型"empty()"?
- "Empty base optimization" lambda 捕获 - 标准禁止?为什么?
- QTcpSocket::readAll() is empty
- 在从 std::vector 移动的上调用 .clear()、.shrink_to_fit()、.empty() 是否合
- 获取所有 FPU 寄存器的值,甚至"empty"个寄存器的值
- QJsonValue gets empty
- Got empty Qt
- 请求使用 .empty 或 .size 的非类类型的成员
- std::size 和 std::empty 的专业化与模板不匹配
- 断言失败 (!ssize.empty()) in remapBilinear.
- 为什么string.empty()在字符串包含一个值时评估为true
- vector.size()= 0和vector.empty()之间是否有区别
- C++11:std::locale::empty() 甚至是一个东西
- CAS: Service Ticket/CAS-Server reply is empty
- 每次都C++ cURL "empty reply from server"