diff --git a/internal/headers.go b/internal/headers.go index 639d2b1..2596a02 100644 --- a/internal/headers.go +++ b/internal/headers.go @@ -134,6 +134,9 @@ func computeXFFHeader(remoteAddr string, origXFFHeader string, pref XFFComputePr origForwardedList := make([]string, 0, 4) if origXFFHeader != "" { origForwardedList = strings.Split(origXFFHeader, ",") + for i := range origForwardedList { + origForwardedList[i] = strings.TrimSpace(origForwardedList[i]) + } } origForwardedList = append(origForwardedList, parsedRemoteIP.String()) forwardedList := make([]string, 0, len(origForwardedList)) diff --git a/internal/xff_test.go b/internal/xff_test.go index 26bb0e6..3a890ab 100644 --- a/internal/xff_test.go +++ b/internal/xff_test.go @@ -130,6 +130,19 @@ func TestComputeXFFHeader(t *testing.T) { }, result: "1.1.1.1", }, + { + name: "TrimSpaces", + remoteAddr: "127.0.0.1:80", + origXFFHeader: "1.1.1.1, 10.0.0.1, fe80::, 100.64.0.1, 169.254.0.1", + pref: XFFComputePreferences{ + StripPrivate: true, + StripLoopback: true, + StripCGNAT: true, + StripLLU: true, + Flatten: true, + }, + result: "1.1.1.1", + }, { name: "invalid-ip-port", remoteAddr: "fe80::",