【发布时间】:2016-04-20 06:35:38
【问题描述】:
我有一个采用所有 4 种 HTTP 请求方法的 RESTful Web 服务。当我使用休息客户端(Chrome 中的高级休息客户端)使用机器的 IP 地址向该服务发送请求时,我得到了正确的响应。我的网址是http://ipaddress:8080/messenger/webapi/messages。但是,当我使用 curl 触发相同的请求时,我得到 curl: (56) Recv failure: Connection was reset。我在两者中发现的唯一区别是 REST 客户端从 0.0.0.0 触发请求,而 curl 请求从 127.0.0.1 触发。但是为什么这会有什么不同呢?
当应用程序在触发 curl 的同一台机器上运行时,相同的 curl 命令会起作用。只有当应用程序在另一台机器上运行时,它才起作用。例如。 curl http://ipaddress:8080/messenger/webapi/messages 用于 GET 请求。
我尝试在安装了该应用程序的机器上禁用防火墙,但没有成功。
【问题讨论】:
-
您应该查看并比较网络上的 HTTP 消息
-
Hans Z 我的请求似乎是正确的,因为如果应用程序在同一台机器上,它就可以工作。
-
中间有其他防火墙会断开连接
-
Hans Z 我可以远程登录到另一台机器的 8080 端口。
-
如果有人最终在这里搜索错误消息,当我的服务器使用端口 80 但我不小心将其配置为使用 ssl 时,我得到了同样的错误。
curl http://server以curl: (56) Recv failure: Connection was reset失败。