12345678910111213141516171819202122232425262728 |
- package webutils
- import (
- "net"
- "net/http"
- "strings"
- )
- func ClientIP(r *http.Request, useCDN bool) string {
- if useCDN {
- xForwardedFor := r.Header.Get("X-Forwarded-For")
- ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0])
- if ip != "" {
- return ip
- }
- ip = strings.TrimSpace(r.Header.Get("X-Real-Ip"))
- if ip != "" {
- return ip
- }
- }
- if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil {
- return ip
- }
- return ""
- }
|