From 9e7eaf720f1b5d4e27c3a4eec868165a384b38ce Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Wed, 21 Feb 2024 15:04:25 +0800 Subject: [PATCH] fix: ipv6 http host addr --- listener/http/utils.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/listener/http/utils.go b/listener/http/utils.go index 63726d51e..e67c0fde1 100644 --- a/listener/http/utils.go +++ b/listener/http/utils.go @@ -5,6 +5,7 @@ import ( "errors" "net" "net/http" + "net/netip" "strings" ) @@ -48,6 +49,11 @@ func removeExtraHTTPHostPort(req *http.Request) { if pHost, port, err := net.SplitHostPort(host); err == nil && (port == "80" || port == "443") { host = pHost + if ip, err := netip.ParseAddr(pHost); err == nil && ip.Is6() { + // RFC 2617 Sec 3.2.2, for IPv6 literal + // addresses the Host header needs to follow the RFC 2732 grammar for "host" + host = "[" + host + "]" + } } req.Host = host