github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/middleware/header_adder.go (about) 1 package middleware 2 3 import ( 4 "net/http" 5 ) 6 7 // HeaderAdder adds headers to responses 8 type HeaderAdder struct { 9 http.Header 10 } 11 12 // Wrap implements Middleware 13 func (h HeaderAdder) Wrap(next http.Handler) http.Handler { 14 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 15 // Do it in pre-order since headers need to be added before 16 // writing the response body 17 dst := w.Header() 18 for k, vv := range h.Header { 19 for _, v := range vv { 20 dst.Add(k, v) 21 } 22 } 23 next.ServeHTTP(w, r) 24 }) 25 }