From 9c833a73f4d891e14d523135da2c7b9d3fd53480 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan <251292+jmorganca@users.noreply.github.com> Date: Fri, 6 Aug 2021 15:18:54 -0400 Subject: [PATCH] fix upgrade requests by placing query string in request body (#165) --- internal/cmd/client.go | 4 ++++ internal/engine/engine.go | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/internal/cmd/client.go b/internal/cmd/client.go index 6914296ee5..ecd21d0c5d 100644 --- a/internal/cmd/client.go +++ b/internal/cmd/client.go @@ -113,6 +113,10 @@ func RunLocalClient() error { timer.Reset(ClientTimeoutDuration) + if r.Header.Get("Upgrade") != "" { + r.Header.Add("X-Infra-Query", r.URL.RawQuery) + } + r.Header.Add("X-Infra-Authorization", r.Header.Get("Authorization")) r.Header.Set("Authorization", "Bearer "+saToken) diff --git a/internal/engine/engine.go b/internal/engine/engine.go index 6a38ca9223..2f4cfb9cca 100644 --- a/internal/engine/engine.go +++ b/internal/engine/engine.go @@ -176,6 +176,12 @@ func proxyHandler(ca []byte, bearerToken string, remote *url.URL) (http.HandlerF } return func(w http.ResponseWriter, r *http.Request) { + // Sometimes the kubernetes proxy strips query string for Upgrade requests + // so we need to put that in the request body + if r.Header.Get("X-Infra-Query") != "" { + r.URL.RawQuery = r.Header.Get("X-Infra-Query") + } + email, ok := r.Context().Value(HttpContextKeyEmail{}).(string) if !ok { logging.L.Debug("Proxy handler unable to retrieve email from context")