45 lines
854 B
Go
45 lines
854 B
Go
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)
|
|
}
|
|
}
|
|
}
|