From 6a95f412c942b871025436ade85e7207d27ee6ec Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Sat, 23 Jan 2021 18:27:23 -0800 Subject: [PATCH] avoid double CORS headers in federation (#11334) CORS proxying adds double headers one by the receiving server, one by proxied server. Remove them before proxying when 'Origin' header is found. --- cmd/common-main.go | 5 ++++- cmd/generic-handlers.go | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cmd/common-main.go b/cmd/common-main.go index 69dfaa60f..30cd5c60f 100644 --- a/cmd/common-main.go +++ b/cmd/common-main.go @@ -17,6 +17,7 @@ package cmd import ( + "context" "crypto/x509" "encoding/gob" "errors" @@ -61,7 +62,9 @@ func init() { PassHost: true, RoundTripper: newGatewayHTTPTransport(1 * time.Hour), Logger: func(err error) { - logger.LogIf(GlobalContext, err) + if err != nil && !errors.Is(err, context.Canceled) { + logger.LogIf(GlobalContext, err) + } }, }) diff --git a/cmd/generic-handlers.go b/cmd/generic-handlers.go index 02f8d4e98..35b74e347 100644 --- a/cmd/generic-handlers.go +++ b/cmd/generic-handlers.go @@ -580,6 +580,11 @@ func setBucketForwardingHandler(h http.Handler) http.Handler { r.URL.Scheme = "https" } r.URL.Host = getHostFromSrv(sr) + // Make sure we remove any existing headers before + // proxying the request to another node. + for k := range w.Header() { + w.Header().Del(k) + } globalForwarder.ServeHTTP(w, r) return } @@ -630,6 +635,11 @@ func setBucketForwardingHandler(h http.Handler) http.Handler { r.URL.Scheme = "https" } r.URL.Host = getHostFromSrv(sr) + // Make sure we remove any existing headers before + // proxying the request to another node. + for k := range w.Header() { + w.Header().Del(k) + } globalForwarder.ServeHTTP(w, r) return }