【问题标题】:curl: (56) Recv failure: Connection was resetcurl:(56)接收失败:连接已重置
【发布时间】: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://servercurl: (56) Recv failure: Connection was reset 失败。

标签: rest curl


【解决方案1】:

检查 curl 使用哪个端口以及是否被防火墙阻止。 还要检查应用上的端口是否接受请求。

【讨论】:

    【解决方案2】:

    我正在编写简单的 php-socket 服务器,但遇到了同样的错误 写入后立即关闭“非阻塞”套接字,不刷新。

    还要检查(如果可能)RESTful web service 服务器是否刷新了写入缓冲区 在关闭连接之前。

    【讨论】:

      猜你喜欢
      • 2012-04-14
      • 1970-01-01
      • 2020-10-16
      • 2020-08-07
      • 2014-06-20
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2019-08-22
      相关资源
      最近更新 更多