From 4d4a09fa19ec04d6d264b2b4311e9009fe87f2bd Mon Sep 17 00:00:00 2001 From: Alex Ellis <alexellis2@gmail.com> Date: Fri, 20 Oct 2017 18:49:06 +0200 Subject: [PATCH] Implement header pass-through Signed-off-by: Alex Ellis <alexellis2@gmail.com> --- gateway/handlers/proxy.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gateway/handlers/proxy.go b/gateway/handlers/proxy.go index eb012a16..78c1069b 100644 --- a/gateway/handlers/proxy.go +++ b/gateway/handlers/proxy.go @@ -168,14 +168,22 @@ func invokeService(w http.ResponseWriter, r *http.Request, metrics metrics.Metri clientHeader := w.Header() copyHeaders(&clientHeader, &response.Header) - header := response.Header.Get("Content-Type") - if len(header) > 0 { - w.Header().Set("Content-Type", response.Header.Get("Content-Type")) + responseHeader := response.Header.Get("Content-Type") + requestHeader := r.Header.Get("Content-Type") + defaultHeader := "text/plain" + contentTypeField := "Content-Type" + + fmt.Printf("Req %s Res %s\n", requestHeader, responseHeader) + + if len(responseHeader) > 0 { + w.Header().Set(contentTypeField, responseHeader) + } else if len(requestHeader) > 0 { + w.Header().Set(contentTypeField, requestHeader) } else { - w.Header().Set("Content-Type", r.Header.Get("Content-Type")) + w.Header().Set(contentTypeField, defaultHeader) } - writeHead(service, metrics, http.StatusOK, w) + writeHead(service, metrics, response.StatusCode, w) w.Write(responseBody) } -- GitLab