如何在MacOS X上将curl命令与http/2一起使用

时间:2020-01-09 10:44:03  来源:igfitidea点击:

如何在http2 /协议中使用curl命令?
我收到一条错误,内容如下:

curl -I --http2 https://google.com``curl:(1)不支持的协议

如何解决此问题,并在Mac OS X或者MacOS Sierra上将cURL与HTTP/2一起使用?

curl的默认版本不支持HTTP/2。
这是我在MacOS sierra上的当前版本:

$ curl --version

因此,如果我尝试将--http2选项传递给curl命令,则会在屏幕上看到以下错误:

$ curl -I --http2 https://theitroad.com/
`curl: (1) Unsupported protocol`

修复curl:(1)MacOS上不支持的协议错误

如下使用brew命令,使用nghttp2安装curl。

nghttp2是HTTP/2及其标头压缩算法HPACK在C语言中的实现。
您需要按以下方式编译和安装cURL:

$ brew update
$ brew upgrade
$ brew install curl --with-nghttp2

示例输出:修复卷曲:(1)Mac OS X上不支持的协议

请记下路径/usr/local/Cellar/curl/7.50.3/bin/curl

在您的~/bin /中创建一个短链接

执行以下命令:

$ mkdir $HOME/bin/
$ cd ~/bin/
$ ln -s /usr/local/Cellar/curl/7.50.3/bin/curl
$ ~/bin/curl --version

输出示例:

curl 7.50.3 (x86_64-apple-darwin16.1.0) libcurl/7.50.3 OpenSSL/1.0.2j zlib/1.2.8 nghttp2/1.16.0
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标志传递到启用了http2的站点:

$ ~/bin/curl -I --http2 https://bash.theitroad.local/

输出示例:

HTTP/2 200 
server: nginx
date: Tue, 01 Nov 2015 21:59:18 GMT
content-type: text/html;charset=utf-8
vary: Accept-Encoding
cache-control: public,max-age=900,s-maxage=900,must-revalidate
expires: Tue, 01 Nov 2015 22:03:40 GMT
etag: de8af9a212f436d9d4d45f4cc994b2ca
last-modified: Mon, 05 Sep 2015 07:49:45 GMT
front-end-https: on
strict-transport-security: max-age=15768000
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1

有关使用更新版本替换MacOS curl的说明

您可以创建公式的软链接,以用PATH magic替换系统cURL,

$ brew link curl --force
$ curl --version