Browse Source

Fix url scheme using for forwarded request with changed proto (#6884)

pull/6845/merge
Alexey 4 months ago
committed by GitHub
parent
commit
29d1701c34
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 8
      weed/s3api/auth_signature_v4.go

8
weed/s3api/auth_signature_v4.go

@ -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

Loading…
Cancel
Save