From cd66b62083072964ae68ff11acb5be391ee7c3f0 Mon Sep 17 00:00:00 2001 From: Dozer Date: Mon, 13 Jan 2020 05:00:18 +0800 Subject: [PATCH] gzip: Avoid duplicated Vary header (#2939) --- caddyhttp/gzip/gzip.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/caddyhttp/gzip/gzip.go b/caddyhttp/gzip/gzip.go index 529365556..1df43b5b2 100644 --- a/caddyhttp/gzip/gzip.go +++ b/caddyhttp/gzip/gzip.go @@ -130,7 +130,19 @@ type gzipResponseWriter struct { func (w *gzipResponseWriter) WriteHeader(code int) { w.Header().Del("Content-Length") w.Header().Set("Content-Encoding", "gzip") - w.Header().Add("Vary", "Accept-Encoding") + varyList, exist := w.Header()["Vary"] + shouldAddVary := true + if exist { + for _, vary := range varyList { + if vary == "Accept-Encoding" { + shouldAddVary = false + break + } + } + } + if shouldAddVary { + w.Header().Add("Vary", "Accept-Encoding") + } originalEtag := w.Header().Get("ETag") if originalEtag != "" && !strings.HasPrefix(originalEtag, "W/") { w.Header().Set("ETag", "W/"+originalEtag)