首頁 > 軟體

如何啟用curl命令HTTP2支援

2020-06-16 17:46:49

當我們直接使用 curl 去請求一個 https 頁面時,預設可以看到其預設返回的是 HTTP1.1 的 response。現在使用 HTTP2 的網站越來越多,技術也越來越成熟,如何啟用 curl 命令 HTTP 2 支援就成為了一個問題。

curl -I https://nghttp2.org/

當我們試圖用 http2 引數時,會返回一個未支援協定的「curl: (1) Unsupported protocol」錯誤:

curl --http2 -I https://nghttp2.org/

使用如下命令我們可以看到 curl 版本:

curl --version

從上圖中,我們可以看到當前 curl 的版本及支援的協定以及功能特性沒有支援 HTTP2。

啟用curl命令HTTP2支援

編譯安裝nghttp2

為了讓 curl 支援 HTTP2 我們需要安裝 nghttp2(http2 的 C 語言庫):

#安裝編譯工具等
sudo apt-get install git g++ make binutils autoconf automake autotools-dev libtool pkg-config 
  zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev 
  libjemalloc-dev cython Python3-dev python-setuptools

#編譯安裝nghttp2
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
sudo make install

升級curl版本

cd ~
sudo apt-get build-dep curl

wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2
tar -xvjf curl-7.46.0.tar.bz2
cd curl-7.46.0
./configure --with-nghttp2=/usr/local --with-ssl
sudo make && make install

echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig

升級完版本之後,我們再檢視 curl 版本時會發布特性中會增加 HTTP2 功能支援。此時 –http2 引數就可以正常使用了:

curl --http2 -I https://nghttp2.org

測試curl with http2

我們再使用如下命令測試 winclient 主頁看看:

curl --http2 -I https://www.winclient.cn

返回結果如下:

curl用法:獲取網站的header頭及狀態碼  http://www.linuxidc.com/Linux/2015-11/125325.htm


IT145.com E-mail:sddin#qq.com