如何在curl获得*空响应时解决连接问题*

Modified on: Thu, 10 Oct 2019 01:00:02 +0800

我想知道如何继续解决为什么对网络服务器的卷曲请求不起作用的问题。我不是在寻找依赖于我的环境的帮助,我只想知道如何收集有关通信的哪些部分失败,端口号等的信息。

chad-integration:~ # curl -v 111.222.159.30
* About to connect() to 111.222.159.30 port 80 (#0)
*   Trying 111.222.159.30... connected
* Connected to 111.222.159.30 (111.222.159.30) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0     OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
> Host: 111.222.159.30
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host 111.222.159.30 left intact
curl: (52) Empty reply from server
* Closing connection #0

所以,我知道空响应意味着curl没有得到服务器的任何响应。没问题,这正是我想弄清楚的。

但是我可以从cURL获得更具体的信息吗?

它能够成功“连接”,所以这不涉及一些双向通信吗?如果是这样,那么为什么回应也没有呢?请注意,我已经验证了我的服务已启动并返回响应。

注意,我在这个级别的网络上有点绿色,所以请随意提供一些一般的指导材料。

作者:chad

最佳答案

您可能需要从服务器端而不是客户端对此进行故障排除。我相信你会把'空洞的回应'与'没有回应'混为一谈。它们并不意味着同样的事情。很可能你得到的答复不包含任何数据。

您可以通过简单地使用telnet而不是通过curl来测试:

telnet 111.222.159.30 80

连接后,粘贴以下内容(取自您的卷曲输出):

GET / HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0     OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
Host: 111.222.159.30
Accept: */*

您应该完全看到curl看到的响应。

您获得空回复的一个可能原因是您尝试访问的是基于名称的虚拟主机的网站。如果是这种情况,根据服务器配置(您尝试命中的站点恰好被配置为默认值),您无法通过IP地址访问该站点而无需一点点工作。

您只需更改上方的“主机”行即可在客户端进行测试;将www.example.com替换为您要访问的网站:

GET / HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0     OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
Host: www.example.com
Accept: */*
作者:yoonix

相关问答

添加新评论