1. HTTP/3でのアクセスに切り替わる仕組み
ブラウザでWebサイトにアクセスする場合、Webサイト側がHTTP/3 に対応していても、一回目は HTTP/3 でアクセスしません。そのWebサイトがHTTP/3に対応しているかどうか分からないからです。
ではどうしているのかというと、HTTP/3 に対応しているWebサーバーは、一回目のレスポンスで「h3」を指定した alt-svc
というフィールドをブラウザに返します。
以下に、alt-svc
フィールドの例を示します。
alt-svc: h3=":443"; ma=43200
この例の場合、h3 というプロトコル(HTTP/3です)をポート番号443で指定しており、有効な期間(ma = max age)は、43200秒(=12時間) です。
この情報を受け取ったブラウザは、次回のアクセスから HTTP/3 でアクセスすることができます。
1.1. HTTP/2 ではどうしていた?
HTTP/2 のときは、TLSハンドシェイクの中で「HTTP/2 が利用可能」であることをブラウザに伝えていました。これについては、以下の記事で説明してます。
しかし、HTTP/3 では UDP の上の階層で TLSではなく「QUIC」プロトコルが使われている(HTTP/2 では TCP の上で TLS が使われている)ので同様の仕組みが使えず、そのため alt-svc
フィールドが使われているようです。
2. 元に戻す方法は? (Chromeの場合)
alt-svc
フィールドの ma (デフォルトは24時間)で指定された期間を過ぎれば、HTTP/3 でアクセスしなくなります。(とはいえ、またアクセスすれば alt-svc
フィールドを受け取るでしょうから、すぐに HTTP/3 でのアクセスに戻るでしょう。)
では、指定された期間内であっても、強制的に HTTP/3 でのアクセスを止める方法はあるのでしょうか?
Chrome において、それらしい手順が分かりましたので、ここに記録しておきます。これが本記事の目的でした。
簡単に言うと、「QUIC」プロトコルの機能を一旦無効にしてから再度有効にする、という方法です。
2.1. 手順
手順は以下になります。
(1) Chrome のアドレスバーに、「chrome://flags
」と入力して Enter キーを押します。
(2) [Experimental QUIC protocol] のプルダウンメニューで [Disabled] を選択し、画面したに表示される [Relaunch] ボタンを押します。Chrome が再起動されます。
(3) もう一度 (2) の操作を行いますが、プルダウンメニューでは [Default] を選択します。再度 Chrome が再起動されます。
以上です。
2.2. 注意点
- 目的のWebサイトがある場合は、ひょっとしたら (2) の後で一度そのWebサイトにアクセスしておくとよいかもしれません。
- 公式な方法でもないですし、もちろん確実な方法でもありません。