それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

curl で http2 にアクセスする

HTTPヘッダを見たらいつものと違うヘッダがあった

http2 だ!

そういえば、そろそろHTTP2を使うサイトも増えてきて、まぁ規格も知ってたほうがイイなと思いました。

curl でhttp2にアクセスする

brew そのままではインスト出来ないのと、osx に付属のcurlでは出来ないので、コンパイルする

brew reinstall curl --  --with-nghttp2
==> Reinstalling curl with --with-openssl, --with-nghttp2
==> Installing dependencies for curl: libev, jansson, spdylay, nghttp2
(略
######################################################################## 100.0%
==> Pouring nghttp2-1.4.0.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/nghttp2/1.4.0: 201 files, 11M
(略
==> Summary
🍺  /usr/local/Cellar/curl/7.45.0: 355 files, 3.2M, built in 3.4 minutes

リンクして使えるようにしておく

brew link curl --force
alias rehash="hash -r "
rehash

リクエストを送信してみる

takuya@~/Desktop$ curl --http2 -I https://http2bin.org/get
HTTP/2.0 200
server:h2o/1.5.0
date:Fri, 27 Nov 2015 15:10:32 GMT
content-type:application/json
access-control-allow-origin:*
access-control-allow-credentials:true
x-clacks-overhead:GNU Terry Pratchett
content-length:252

他にも試してみよう

takuya@~/Desktop$ curl --http2 -I https://twitter.com/
HTTP/2.0 200
cache-control:no-cache, no-store, must-revalidate, pre-check=0, post-check=0
content-length:252060
content-type:text/html;charset=utf-8
date:Fri, 27 Nov 2015 15:09:46 GMT
expires:Tue, 31 Mar 1981 05:00:00 GMT
last-modified:Fri, 27 Nov 2015 15:09:46 GMT
pragma:no-cache
server:tsa_a
(略
x-xss-protection:1; mode=block

HTTP/2 で通信した時のヘッダ

HTTP/1.1 で表示されるヘッダと若干差異がある表示になる。

f:id:takuya_1st:20151128001648p:plain

Chromeの開発ツールでHTTP2がパット見でわからないから、時々あれれってなるのです。

リクエストヘッダ・レスポンスヘッダがいつもとほんの少しだけ異なるので、時々困る。

参考資料

C 言語: curl で HTTP/2 GET リクエストを送信する - Sarabande.jp