web-dev-qa-db-ja.com

Webブラウザがh2c(TLSなしのHTTP / 2)をサポートしないのはなぜですか?

私は本当にウェブを検索しますが、ウェブブラウザがh2c(TLSなしのhttp/2)をサポートしない理由を見つけることができません。任意のアイデア、感謝します。

Httpsを使用したhttp/2の説明では、ALPNを使用しています(これはh2と呼ばれます)。 http/2でhttpを使用する場合、ALPN(これはh2cと呼ばれます)は必要ありませんが、Webブラウザーではほとんどサポートされていません。なぜそうですか?

多くのリソースでは、信頼性は常に良好ですが、秘密性は必要ないと感じています(プライベートな実装もありますが、httpボディのデジタル署名は広くサポートされていません)。機密性が必要ない場合、h2cは本当に良いものです。

22
user1462586

技術的に

HTTP/2がHTTPSよりもはるかに優れており、扱いやすいという技術的な理由がいくつかあります。

  1. ALPNを使用したTLSでのHTTP/2ネゴシエーションの実行ははるかに簡単であり、プレーンHTTPのUpgrade:のような往復を失うことはありません。また、プレーンテキストHTTP/2で発生するPOSTでのアップグレードの問題もありません。
  2. WebのN%は、リクエスト内の未承諾Upgrade: h2cheadersをサポートせず、代わりに400エラーで応答します。
  3. TCPポート80は、Y%のケースで壊れていますそのような接続で、それがHTTP/1.1でない場合は、問題が発生します(これは、たとえばbrotliもHTTPSを必要とする理由です)。

イデオロギー的に

一部の大規模なWebブラウザー開発チームが共有し、一部で作業しているWeb上のHTTPSのプッシュがあります。機能がHTTPSのみで実装されている場合、サイトおよびサービスがHTTPSに移行するもう1つの動機として機能するため、ボーナスと見なされます。そのため、一部のチームは、TLSなしでHTTP/2を機能させるために(もしあったとしても)非常に一生懸命試みたことはありません。

実際に

少なくとも1つのブラウザベンダーが、プレーンテキストHTTP(h2c)を介して行われるユーザーにHTTP/2を実装および提供する意向を早期に表明しました。上記のような技術的な障害のために、彼らは結局これを決してしませんでした。

36
Daniel Stenberg