curl 是常用的 web 调试工具。在 7.43.0 版本(包括 libcurl)以后就开始支持 HTTP/2 协议。目前多数平台的 curl 版本比较低,还不支持 HTTP/2协议,文本讲解如何对 curl 进行升级。
可以通过如下命令查看 curl 是否支持 HTTP/2 协议:
$ curl -V
curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
如果没有出现 http2 的字样,就表示不支持,需要重新安装。
我的 CentOS 7 的 yum 源最新的 curl 只到 7.29.0,所以需要重新安装。
安装依赖环境
# yum -y install libev libev-devel zlib zlib-devel openssl openssl-devel git
下载 nghttp2 (http2 的 C 语言库) 并编译安装
# cd /var/tmp
# git clone https://github.com/tatsuhiro-t/nghttp2.git
# cd nghttp2
# autoreconf -i
# automake
# autoconf
# ./configure
# make
# make install
修改库文件路径
# echo '/usr/local/lib' > /etc/ld.so.conf.d/custom-libs.conf
# ldconfig
# ldconfig -p| grep libnghttp2
libnghttp2.so.14 (libc6,x86-64) => /usr/local/lib/libnghttp2.so.14
libnghttp2.so (libc6,x86-64) => /usr/local/lib/libnghttp2.so
源码安装 curl 最新版
# cd /var/tmp
# git clone https://github.com/bagder/curl.git
# cd curl
# ./buildconf
# ./configure --with-nghttp2=/usr/local
Check it.
HTTP2 support: enabled (nghttp2)
# make
# make install
以上内参考自 《cURL with HTTP/2》
Mac 下用 brew 安装比较简洁
先删除就版本
$ brew install curl
安装新版本,要追加 --with-nghttp2
选项
$ brew install curl --with-nghttp2
以上内容参考自《Using cURL with HTTP/2 on Mac OS X》
curl -V
curl 7.48.0 (x86_64-apple-darwin15.4.0) libcurl/7.48.0 OpenSSL/1.0.2g zlib/1.2.5 nghttp2/1.9.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
有 HTTP2
字样,表示安装成功。
$ curl -I --http2 https://http2.akamai.com/demo
出处:https://www.coderxing.com/curl-with-http2.html
本文为原创文章,采用署名-相同方式共享 3.0 中国大陆(CC BY-SA 3.0 CN))进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。