cURL 在不允许的情况下收到 HTTP/0.9,但已安装 nghttp2

cURL 在不允许的情况下收到 HTTP/0.9,但已安装 nghttp2

我正在尝试为 Monero 节点设置钱包 RPC,但是当我使用 cURL 连接到该端口时,出现此错误:

curl: (1) Received HTTP/0.9 when not allowed

然而,检查后curl --version我发现:

curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3

我认为只有在没有 nghttp2 的情况下编译 cURL 时才会出现该错误。这是一个 AWS 环境,运行 20.04。

答案1

curl --http0.9

会帮到你。升级后我收到了同样的错误消息curl

答案2

非常高兴能看到您的完整curl请求。HTTP/0.9 是 1991 年的,早于基本 HTTP/1.0,所以我认为问题出在服务器的响应上。

请尝试:

  1. 您的curl命令带有--verbose参数,因此它会输出所有信息。

  2. 尝试使用相同的 URL curlwget看看保存的文件内容是什么。从新的空文件夹内执行此操作。

  3. telnet 到该端口并输入:

    GET / HTTP/1.0<ENTER>
    <ENTER>
    

    <ENTER>只需按下Enter键并查看输出即可。也许您正在尝试打开错误的端口。

  4. 有时问题出在证书上。请尝试使用以下参数:

    --ssl
    --sslv2
    --sslv3
    
  5. 您还可以强制执行:

    --http1.1
    --http2
    

另外,您的组织或 ISP 可能正在使用透明代理来捕获请求或使用 SSL 证书,从而导致问题。

答案3

就我而言,我从 curl 得到了同样的错误,结果发现它是一个 ftp 服务器......

因此对于那些来这里寻找“curl:(1)在不允许的情况下收到 HTTP/0.9“在浏览器上尝试一下:

ftp://IP:PORT

或者在终端上这样操作:

ftp IP PORT

答案4

您正在尝试连接到 ESMTP 邮件服务器 - 通过尝试 telnet 到相同的地址和端口来查看 ESMTP 问候语来验证这一点。

相关内容