Files
xk-hy-forward-go/internal/forward/headers.go
2026-05-22 08:42:27 +08:00

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)
}
}
}