From c8b38ee1bf5aa59799074db85eb549a0e3f541e4 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Fri, 24 May 2024 23:39:30 +0200 Subject: fix Host weirdness on fly with h2c --- internal/server/server.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/server/server.go b/internal/server/server.go index b35b6dd..61d5790 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -52,6 +52,12 @@ func applyDevModeOverrides(config *cfg.Config, listenAddress string) { func serverHeaderHandler(wrappedHandler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.ProtoMajor >= 2 && r.Header.Get("Host") != "" { + // net/http does this for HTTP/1.1, but not h2c + // TODO: check with HTTP/2.0 (i.e. with TLS) + r.Host = r.Header.Get("Host") + r.Header.Del("Host") + } w.Header().Set("Server", serverHeader) wrappedHandler.ServeHTTP(w, r) }) -- cgit 1.4.1