diff --git a/cmd/imageproxy/main.go b/cmd/imageproxy/main.go index 2c9ce5d8c..08d42b4e0 100644 --- a/cmd/imageproxy/main.go +++ b/cmd/imageproxy/main.go @@ -39,6 +39,7 @@ var referrers = flag.String("referrers", "", "comma separated list of allowed re var includeReferer = flag.Bool("includeReferer", false, "include referer header in remote requests") var followRedirects = flag.Bool("followRedirects", true, "follow redirects") var baseURL = flag.String("baseURL", "", "default base URL for relative remote URLs") +var passRequestHeader = flag.String("passRequestHeader", "", "default authentication header") var cache tieredCache var signatureKeys signatureKeyList var scaleUp = flag.Bool("scaleUp", false, "allow images to scale beyond their original dimensions") @@ -79,6 +80,7 @@ func main() { } } + p.DefaultPassRequestHeader = *passRequestHeader p.IncludeReferer = *includeReferer p.FollowRedirects = *followRedirects p.Timeout = *timeout diff --git a/imageproxy.go b/imageproxy.go index 8a37a567f..8b48fb609 100644 --- a/imageproxy.go +++ b/imageproxy.go @@ -53,6 +53,10 @@ type Proxy struct { // is included in remote requests. IncludeReferer bool + // IncludeReferer controls whether the original Referer request header + // is included in remote requests. + DefaultPassRequestHeader string + // FollowRedirects controls whether imageproxy will follow redirects or not. FollowRedirects bool @@ -179,6 +183,9 @@ func (p *Proxy) serveImage(w http.ResponseWriter, r *http.Request) { // pass along the referer header from the original request copyHeader(actualReq.Header, r.Header, "referer") } + if p.DefaultPassRequestHeader != "" { + actualReq.Header.Set(p.DefaultPassRequestHeader, r.Header.Get(p.DefaultPassRequestHeader)) + } if p.FollowRedirects { // FollowRedirects is true (default), ensure that the redirected host is allowed p.Client.CheckRedirect = func(newreq *http.Request, via []*http.Request) error {