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  }