Warum unterstützen Webbrowser keine h2c (HTTP / 2 ohne TLS)?

9

Ich suche wirklich im Web, und ich kann nicht den Grund finden, warum Webbrowser h2c (http / 2 ohne TLS) nicht unterstützen. Irgendeine Idee, geschätzt.

Ein wenig Klärung http / 2 mit https verwendet ALPN (dies wird als h2 bezeichnet). http / 2 mit http benötigt kein ALPN (dies wird h2c genannt), aber fast kein Webbrowser unterstützt es. Warum ist das so?

Ich glaube, dass für viele Ressourcen keine Vertraulichkeit erforderlich ist, obwohl die Authentizität immer gut ist (die digitale Signatur des http-Körpers wird nicht umfassend unterstützt, obwohl es einige private Implementierungen gibt). Wenn Vertraulichkeit nicht benötigt wird, dann ist h2c wirklich eine gute Sache zu haben.

    
user1462586 17.10.2017, 11:19
quelle

1 Antwort

19

Technisch

Es gibt mehrere technische Gründe, warum HTTP / 2 viel besser und einfacher über HTTPS zu handhaben ist:

  1. Das Ausführen von HTTP / 2-Aushandlung in TLS mit ALPN ist viel einfacher und verliert keine round-trips wie Upgrade: in reinem HTTP. Und es leidet nicht unter dem POST-Upgrade-Problem, das Sie mit HTTP / 2 im Klartext erhalten.
  2. N% des Webs unterstützt nicht angeforderte Upgrade: h2c -Header in Anfragen und antwortet stattdessen mit 400 Fehlern.
  3. Etwas anderes als HTTP / 1.1 über TCP-Port 80 bricht in Y% der Fälle ab, da die Welt voll von mittleren Boxen ist, die Dinge "in-stream" für solche Verbindungen "heraushelfen" und ersetzen. Wenn das dann nicht HTTP / 1.1 ist, dann brechen die Dinge (deshalb benötigt z. B. auch Brotli HTTPS).

Ideologisch

Es gibt einen Anstoß für mehr HTTPS im Web, die teilweise von einigen der größeren Webbrowser-Entwicklerteams geteilt und bearbeitet werden. Dies macht es als einen Bonus, wenn Features nur mit HTTPS implementiert werden, da sie dann als weitere Motivation für Websites und Dienste dienen, auf HTTPS umzusteigen. Daher haben einige Teams nie (sehr) versucht, HTTP / 2 ohne TLS zu verwenden.

Praktisch

Mindestens ein Browser-Anbieter hat bereits früh seine Absicht zum Ausdruck gebracht, HTTP / 2 für Benutzer zu implementieren und bereitzustellen, die über HTTP (h2c) im Klartext erfolgen. Sie haben dies aufgrund technischer Hindernisse, wie oben erwähnt, nie getan.

    
Daniel Stenberg 17.10.2017 11:35
quelle

Tags und Links