One thing where the semantics are not the same between HTTP/1.1 and HTTP/2/3(?) is the `Host` header, which is often (always?) gone in the latter in favor off the `:authority` pseudo-header.
Apps/scripts may rely on `Host`, but the underlying HTTP/2 server software might not normalize/expose it in a backwards-compatible way (e.g. Hyper in Rust).
Technically I guess it’s the browsers fault it doesn’t set it.
I would be curious to know if there are other such discrepancies that apps migh run into when enabling HTTP/2/3.