package forward import "net/http" var superviseAllowedHeaders = []string{ "Content-Type", "X-Ca-Appkey", "X-Ca-Encryption", "X-Ca-Nonce", "X-Ca-Timestamp", "X-Service-Id", "X-Service-Method", "X-Ca-Signature", "requestBody", } var fileAllowedHeaders = []string{ "Content-Type", "X-Authorization", } func allowedHeaderSet(kind string) map[string]struct{} { list := superviseAllowedHeaders if kind == "file" { list = fileAllowedHeaders } set := make(map[string]struct{}, len(list)) for _, name := range list { set[http.CanonicalHeaderKey(name)] = struct{}{} } return set } func copyAllowedHeaders(dst, src http.Header, kind string) { allow := allowedHeaderSet(kind) for key, values := range src { if _, ok := allow[http.CanonicalHeaderKey(key)]; !ok { continue } for _, v := range values { dst.Add(key, v) } } }