diff --git a/weed/server/volume_server_handlers_read.go b/weed/server/volume_server_handlers_read.go index b12f8ef92c..a9631f7126 100644 --- a/weed/server/volume_server_handlers_read.go +++ b/weed/server/volume_server_handlers_read.go @@ -123,6 +123,7 @@ func (vs *VolumeServer) proxyReqToTargetServer(w http.ResponseWriter, r *http.Re hopByHop := map[string]bool{ "Connection": true, "Keep-Alive": true, "Te": true, "Trailer": true, "Upgrade": true, "Host": true, "Content-Length": true, "Transfer-Encoding": true, + "Proxy-Connection": true, "Proxy-Authenticate": true, "Proxy-Authorization": true, } for _, v := range r.Header.Values("Connection") { for _, token := range strings.Split(v, ",") { diff --git a/weed/server/volume_server_handlers_read_test.go b/weed/server/volume_server_handlers_read_test.go index cf0c2600c6..a19611eaf3 100644 --- a/weed/server/volume_server_handlers_read_test.go +++ b/weed/server/volume_server_handlers_read_test.go @@ -220,6 +220,8 @@ func TestProxyReqToTargetServerPreservesMethodAndResponse(t *testing.T) { r.Header.Set("Upgrade", "h2c") r.Header.Set("Te", "trailers") r.Header.Set("X-Hop-Marker", "private") + r.Header.Set("Proxy-Connection", "keep-alive") + r.Header.Set("Proxy-Authorization", "Basic cHJveHk6c2VjcmV0") w := httptest.NewRecorder() vs.proxyReqToTargetServer(w, r) @@ -235,7 +237,7 @@ func TestProxyReqToTargetServerPreservesMethodAndResponse(t *testing.T) { if got.rangeHeader != "bytes=0-3" || got.ifNoneMatch != `"client-etag"` || got.ifModifiedAt != "Wed, 21 Oct 2015 07:28:00 GMT" { t.Errorf("peer received conditional/range headers %+v", got) } - for _, dropped := range []string{"Connection", "Keep-Alive", "Upgrade", "Te", "X-Hop-Marker"} { + for _, dropped := range []string{"Connection", "Keep-Alive", "Upgrade", "Te", "X-Hop-Marker", "Proxy-Connection", "Proxy-Authorization"} { if got.header.Get(dropped) != "" { t.Errorf("hop-by-hop header %s reached the replica: %v", dropped, got.header) }