带有CURL的HTTP2给出“不支持的协议”

问题描述 投票:15回答:1

已经按照here的步骤,当使用curl Unsupported Protocol选项时,我仍然有--http2。类似地,将CURLOPT_HTTP_VERSION设置为CURL_HTTP_VERSION_2_0会导致程序使用HTTP / 1.1进行通信,而不是HTTP / 2。

平台:VMware Player 7上的Ubuntu 15.04。

我用--prefix=/usr/local安装了nghttp2-1.0.4,因此libnghttp2。*位于/usr/local/lib

这是配置curl-7.43.0的代码:

./configure --with-nghttp2=/usr/local

结果显示HTTP2已启用:

    HTTP2 support:    enabled (nghttp2)

makesudo make install之后,以下返回Unsupported Protocol

curl --http2 https://http2.akamai.com

curl版本不支持nghttp2:

curl 7.43.0 (i686-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

然后我按照here的建议,我需要有OpenSSL 1.0.2或更高版本。在/ opt / openssl中安装后,配置:

./configure --with-nghttp2=/usr/local --with-ssl=/opt/openssl/lib

makesudo make install之后,所有问题都保持不变。奇怪的是,curl --version仍然返回与上面相同的信息,OpenSSL / 1.0.1f尚未升级。

任何帮助我成功使用--http2选项的帮助非常感谢。

curl http2
1个回答
4
投票

显然,您没有使用正确版本的curl链接,至少在运行时。这就是输出libcurl / 7.38.0的含义。我的版本号更高。尝试

LD_LIBRARY_PATH=/usr/local/lib curl <whatever> 

作为你的命令。或者只是为了确定:

ldd `which curl` 

并注意列出的依赖项。


0
投票

这个真的可以帮我正确设置它

© www.soinside.com 2019 - 2024. All rights reserved.