|
@ -719,9 +719,11 @@ func extractHostHeader(r *http.Request) string { |
|
|
|
|
|
|
|
|
forwardedHost := r.Header.Get("X-Forwarded-Host") |
|
|
forwardedHost := r.Header.Get("X-Forwarded-Host") |
|
|
forwardedPort := r.Header.Get("X-Forwarded-Port") |
|
|
forwardedPort := r.Header.Get("X-Forwarded-Port") |
|
|
|
|
|
forwardedProto := r.Header.Get("X-Forwarded-Proto") |
|
|
|
|
|
|
|
|
// If X-Forwarded-Host is set, use that as the host.
|
|
|
// If X-Forwarded-Host is set, use that as the host.
|
|
|
// If X-Forwarded-Port is set, use that too to form the host.
|
|
|
// If X-Forwarded-Port is set, use that too to form the host.
|
|
|
|
|
|
// If X-Forwarded-Proto is set, check if is it default to omit the port.
|
|
|
if forwardedHost != "" { |
|
|
if forwardedHost != "" { |
|
|
extractedHost := forwardedHost |
|
|
extractedHost := forwardedHost |
|
|
host, port, err := net.SplitHostPort(extractedHost) |
|
|
host, port, err := net.SplitHostPort(extractedHost) |
|
@ -731,7 +733,11 @@ func extractHostHeader(r *http.Request) string { |
|
|
forwardedPort = port |
|
|
forwardedPort = port |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if !isDefaultPort(r.URL.Scheme, forwardedPort) { |
|
|
|
|
|
|
|
|
scheme := r.URL.Scheme |
|
|
|
|
|
if forwardedProto != "" { |
|
|
|
|
|
scheme = forwardedProto |
|
|
|
|
|
} |
|
|
|
|
|
if !isDefaultPort(scheme, forwardedPort) { |
|
|
extractedHost = net.JoinHostPort(extractedHost, forwardedPort) |
|
|
extractedHost = net.JoinHostPort(extractedHost, forwardedPort) |
|
|
} |
|
|
} |
|
|
return extractedHost |
|
|
return extractedHost |
|
|