已经按照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)
在make
和sudo 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
在make
和sudo make install
之后,所有问题都保持不变。奇怪的是,curl --version
仍然返回与上面相同的信息,OpenSSL / 1.0.1f尚未升级。
非常感谢任何帮助我成功使用--http2
选项的帮助。
答案 0 :(得分:4)
显然,您没有使用正确版本的curl进行链接,至少在运行时是这样。这就是输出libcurl / 7.38.0的含义。我的版本号更高。尝试
LD_LIBRARY_PATH=/usr/local/lib curl <whatever>
作为你的命令。或者只是为了确定:
ldd `which curl`
并注意列出的依赖项。
答案 1 :(得分:0)
这真的可以帮助我正确设置
sudo make install
答案 2 :(得分:0)
我发现curl 7.53.1 for Windows这个工具对于测试http2请求非常有用。 它具有针对Windows的curl的预编译版本,这些Windows版本具有OpenSSL,ngttp2,zlib和IPv6支持。