Files
x/internal/net/http/http.go
T
2024-09-15 18:28:24 +08:00

27 lines
413 B
Go

package http
import (
"net"
"net/http"
"strings"
)
func GetClientIP(req *http.Request) net.IP {
if req == nil {
return nil
}
// cloudflare CDN
sip := req.Header.Get("CF-Connecting-IP")
if sip == "" {
ss := strings.Split(req.Header.Get("X-Forwarded-For"), ",")
if len(ss) > 0 && ss[0] != "" {
sip = ss[0]
}
}
if sip == "" {
sip = req.Header.Get("X-Real-Ip")
}
return net.ParseIP(sip)
}