mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
42 lines
629 B
Go
42 lines
629 B
Go
package http
|
|
|
|
import (
|
|
"net/http"
|
|
"slices"
|
|
)
|
|
|
|
func RemoveHop(h http.Header) {
|
|
reqUpType := UpgradeType(h)
|
|
RemoveHopByHopHeaders(h)
|
|
|
|
if reqUpType != "" {
|
|
h.Set("Connection", "Upgrade")
|
|
h.Set("Upgrade", reqUpType)
|
|
} else {
|
|
h.Del("Connection")
|
|
}
|
|
}
|
|
|
|
func CopyHeader(dst, src http.Header) {
|
|
for k, vv := range src {
|
|
for _, v := range vv {
|
|
dst.Add(k, v)
|
|
}
|
|
}
|
|
}
|
|
|
|
func FilterHeaders(h http.Header, allowed []string) {
|
|
if allowed == nil {
|
|
return
|
|
}
|
|
|
|
for i := range allowed {
|
|
allowed[i] = http.CanonicalHeaderKey(allowed[i])
|
|
}
|
|
|
|
for key := range h {
|
|
if !slices.Contains(allowed, key) {
|
|
h.Del(key)
|
|
}
|
|
}
|
|
}
|