123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package dpcore
- import (
- "net"
- "net/http"
- "strings"
- )
- func removeHeaders(header http.Header, noCache bool) {
-
- if c := header.Get("Connection"); c != "" {
- for _, f := range strings.Split(c, ",") {
- if f = strings.TrimSpace(f); f != "" {
- header.Del(f)
- }
- }
- }
-
- for _, h := range hopHeaders {
- if header.Get(h) != "" {
- header.Del(h)
- }
- }
-
- if header.Get("Zr-Origin-Upgrade") != "" {
- header.Set("Upgrade", header.Get("Zr-Origin-Upgrade"))
- header.Del("Zr-Origin-Upgrade")
- }
-
- if noCache {
- header.Del("Cache-Control")
- header.Set("Cache-Control", "no-store")
- }
- }
- func rewriteUserAgent(header http.Header, UA string) {
-
- if header.Get("User-Agent") == "" {
-
-
- header.Del("User-Agent")
- header.Set("User-Agent", UA)
- }
- }
- func addXForwardedForHeader(req *http.Request) {
- if clientIP, _, err := net.SplitHostPort(req.RemoteAddr); err == nil {
-
-
-
- if prior, ok := req.Header["X-Forwarded-For"]; ok {
- clientIP = strings.Join(prior, ", ") + ", " + clientIP
- }
- req.Header.Set("X-Forwarded-For", clientIP)
- if req.TLS != nil {
- req.Header.Set("X-Forwarded-Proto", "https")
- } else {
- req.Header.Set("X-Forwarded-Proto", "http")
- }
- if req.Header.Get("X-Real-Ip") == "" {
-
- CF_Connecting_IP := req.Header.Get("CF-Connecting-IP")
- Fastly_Client_IP := req.Header.Get("Fastly-Client-IP")
- if CF_Connecting_IP != "" {
-
- req.Header.Set("X-Real-Ip", CF_Connecting_IP)
- } else if Fastly_Client_IP != "" {
-
- req.Header.Set("X-Real-Ip", Fastly_Client_IP)
- } else {
-
- ips := strings.Split(clientIP, ",")
- if len(ips) > 0 {
- req.Header.Set("X-Real-Ip", strings.TrimSpace(ips[0]))
- }
- }
- }
- }
- }
- func injectUserDefinedHeaders(header http.Header, userHeaders [][]string) {
- for _, userHeader := range userHeaders {
- if len(userHeader) == 0 {
-
- return
- }
- headerKey := userHeader[0]
- headerValue := userHeader[1]
- if headerValue == "" {
-
- header.Del(headerKey)
- continue
- }
-
- header.Del(headerKey)
- header.Set(headerKey, headerValue)
- }
- }
|