web-dev-qa-db-fra.com

Pourquoi les navigateurs Web ne prennent-ils pas en charge H2C (HTTP / 2 sans TLS)?

Je recherche vraiment sur le Web et je ne trouve pas la raison pour laquelle les navigateurs Web ne prennent pas en charge H2C (http/2 sans TLS). Toute idée, appréciée.

Une petite clarification http/2 avec https utilise ALPN (cela s'appelle h2). http/2 avec http n'a pas besoin d'ALPN (cela s'appelle h2c), mais presque aucun navigateur Web ne le prend en charge. Pourquoi en est-il ainsi?

Je pense que pour de nombreuses ressources, il n'y a pas besoin de confidentialité, bien que l'authenticité soit toujours bonne (la signature numérique du corps http n'est pas largement prise en charge bien qu'il existe des implémentations privées). Étant donné que la confidentialité n'est pas nécessaire, alors le H2C est vraiment une bonne chose à avoir.

22
user1462586

Techniquement

Il existe plusieurs raisons techniques pour lesquelles HTTP/2 est bien meilleur et plus facile à gérer via HTTPS:

  1. La négociation HTTP/2 dans TLS avec ALPN est beaucoup plus facile et ne perd pas les allers-retours comme Upgrade: en HTTP simple. Et il ne souffre pas du problème de mise à niveau sur POST que vous obtenez avec HTTP/2 en texte brut.
  2. N% du Web ne prend pas en charge les messages non sollicités Upgrade: h2ctêtes dans les demandes et répondent à la place avec 400 erreurs.
  3. Faire autre chose que HTTP/1.1 sur TCP port 80 casse dans Y% des cas car le monde est plein de boîtiers intermédiaires qui "aident" et remplacent/ajoutent des choses dans le flux pour Si ce n'est pas le cas de HTTP/1.1, les choses se brisent (c'est aussi pourquoi brotli par exemple nécessite également HTTPS).

Idéologiquement

Il y a une poussée pour plus de HTTPS sur le Web qui est partagée et travaillée en partie par certaines des plus grandes équipes de développeurs de navigateurs Web. Cela fait qu'il est considéré comme un bonus si les fonctionnalités sont implémentées uniquement en HTTPS car elles fonctionnent ensuite comme une autre motivation pour les sites et services de passer au HTTPS. Ainsi, certaines équipes n'ont jamais essayé très fort (voire pas du tout) de faire fonctionner HTTP/2 sans TLS.

Pratiquement

Au moins un fournisseur de navigateur a exprimé très tôt son intention d'implémenter et de fournir HTTP/2 pour les utilisateurs via HTTP en texte brut (h2c). Ils ont fini par ne jamais le faire à cause des obstacles techniques comme mentionné ci-dessus.

36
Daniel Stenberg