diff options
| author | Alexey <78480736+Olex1313@users.noreply.github.com> | 2025-06-16 22:50:09 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-16 12:50:09 -0700 |
| commit | 29d1701c343040c539f6926d73400fd1d6652bc9 (patch) | |
| tree | ed845cd82b19c3604aa6ed6c9e1bb849481460be | |
| parent | 78069605a61515e95adf6b56ff07195ada7197bc (diff) | |
| download | seaweedfs-29d1701c343040c539f6926d73400fd1d6652bc9.tar.xz seaweedfs-29d1701c343040c539f6926d73400fd1d6652bc9.zip | |
Fix url scheme using for forwarded request with changed proto (#6884)
| -rw-r--r-- | weed/s3api/auth_signature_v4.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/weed/s3api/auth_signature_v4.go b/weed/s3api/auth_signature_v4.go index f3b2720ee..c70027106 100644 --- a/weed/s3api/auth_signature_v4.go +++ b/weed/s3api/auth_signature_v4.go @@ -719,9 +719,11 @@ func extractHostHeader(r *http.Request) string { forwardedHost := r.Header.Get("X-Forwarded-Host") 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-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 != "" { extractedHost := forwardedHost host, port, err := net.SplitHostPort(extractedHost) @@ -731,7 +733,11 @@ func extractHostHeader(r *http.Request) string { 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) } return extractedHost |
