ip.go 476 B

12345678910111213141516171819202122232425262728
  1. package webutils
  2. import (
  3. "net"
  4. "net/http"
  5. "strings"
  6. )
  7. func ClientIP(r *http.Request, useCDN bool) string {
  8. if useCDN {
  9. xForwardedFor := r.Header.Get("X-Forwarded-For")
  10. ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0])
  11. if ip != "" {
  12. return ip
  13. }
  14. ip = strings.TrimSpace(r.Header.Get("X-Real-Ip"))
  15. if ip != "" {
  16. return ip
  17. }
  18. }
  19. if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil {
  20. return ip
  21. }
  22. return ""
  23. }