18 lines
510 B
Go
18 lines
510 B
Go
package handler
|
|
|
|
import "net/http"
|
|
|
|
func copyProxyHeaders(dst http.Header, src http.Header) {
|
|
// Skip hop-by-hop headers; see RFC 7230 section 6.1.
|
|
// We intentionally preserve multi-value headers by copying the full slice.
|
|
for k, v := range src {
|
|
switch http.CanonicalHeaderKey(k) {
|
|
case "Connection", "Keep-Alive", "Proxy-Authenticate", "Proxy-Authorization", "Te", "Trailer", "Transfer-Encoding", "Upgrade":
|
|
continue
|
|
}
|
|
copied := make([]string, len(v))
|
|
copy(copied, v)
|
|
dst[k] = copied
|
|
}
|
|
}
|