mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-04-05 20:52:50 +08:00
use X-Forwarded-Host and X-Forwarded-Port to determine correct host for AWS signature (#6514)
This commit is contained in:
parent
68f547bdf2
commit
a250699225
@ -683,12 +683,8 @@ func extractSignedHeaders(signedHeaders []string, r *http.Request) (http.Header,
|
||||
// be sent, for the time being keep this work around.
|
||||
extractedSignedHeaders.Set(header, "100-continue")
|
||||
case "host":
|
||||
// Go http server removes "host" from Request.Header
|
||||
if forwardedHost := r.Header.Get("X-Forwarded-Host"); forwardedHost != "" {
|
||||
extractedSignedHeaders.Set(header, forwardedHost)
|
||||
} else {
|
||||
extractedSignedHeaders.Set(header, r.Host)
|
||||
}
|
||||
extractedHost := extractHostHeader(r)
|
||||
extractedSignedHeaders.Set(header, extractedHost)
|
||||
case "transfer-encoding":
|
||||
for _, enc := range r.TransferEncoding {
|
||||
extractedSignedHeaders.Add(header, enc)
|
||||
@ -705,6 +701,25 @@ func extractSignedHeaders(signedHeaders []string, r *http.Request) (http.Header,
|
||||
return extractedSignedHeaders, s3err.ErrNone
|
||||
}
|
||||
|
||||
func extractHostHeader(r *http.Request) string {
|
||||
|
||||
forwardedHost := r.Header.Get("X-Forwarded-Host")
|
||||
forwardedPort := r.Header.Get("X-Forwarded-Port")
|
||||
|
||||
// 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 forwardedHost != "" {
|
||||
extractedHost := forwardedHost
|
||||
if forwardedPort != "" {
|
||||
extractedHost = forwardedHost + ":" + forwardedPort
|
||||
}
|
||||
return extractedHost
|
||||
} else {
|
||||
// Go http server removes "host" from Request.Header
|
||||
return r.Host
|
||||
}
|
||||
}
|
||||
|
||||
// getSignedHeaders generate a string i.e alphabetically sorted, semicolon-separated list of lowercase request header names
|
||||
func getSignedHeaders(signedHeaders http.Header) string {
|
||||
var headers []string
|
||||
|
Loading…
Reference in New Issue
Block a user