Shohhei1126's Blog

curlでhttp2に対応してるかどうか確認する

ほとんど触ってなかったがさすがにHTTP/2の動作確認が必要になってきたので手を動かしながらさらってみる。

curl--http2 があったので実行してみたがエラーになった。

$ curl --http2 -I -XGET https://freshlive.tv
curl: (1) Unsupported protocol

curlをオプション付きでビルドし直す必要がある模様。

幸いbrewの機能が使えたので以下でインストールしなおす。

5分くらいかかった気がする。

$ brew install curl --with-nghttp2

これだけでは既存のcurlがPATHに通ってるのでbrewで入れたものに入れ替える。

$ which curl
/usr/bin/curl
$ brew link curl --force
$ which curl
/usr/local/bin/curl

この状態でもなぜか既存のcurlが使われていたので . ~/.bashrc した。

これで再度叩いてみると成功する。

$ curl --http2 -I -XGET https://freshlive.tv
HTTP/2 200
...

ここまでやって気づいたけど --http2 オプション付けなくても勝手にHTTP/2が使われてる。

$ curl -I -XGET https://freshlive.tv
HTTP/2 200

-v をつけて詳細見てみるとALNPが使われていた。

ソースがなくてアレだけど http2http/1.1 かサーバに聞いてacceptされたやつが使われる模様。

$ curl -v -I -XGET https://freshlive.tv
...
* ALPN, offering h2
* ALPN, offering http/1.1
...
* ALPN, server accepted to use h2
...

ちなみにアメブロはhttp/1.1だった。

$ curl -v -I -XGET https://ameblo.jp/
...
* ALPN, offering h2
* ALPN, offering http/1.1
...
* ALPN, server accepted to use http/1.1
...

とりあえずhttp2に対応してるか確認できるようになった。

gRPCもやってきなのでこまめにHTTP/2の仕様も確認していかんとなと。