/** * package utils * 作用:从 HTTP 请求中提取客户端真实 IP */ package utils import ( "strings" "github.com/gin-gonic/gin" ) /** * GetClientIP * 功能:优先从代理头获取,否则使用 Gin ClientIP */ func GetClientIP(c *gin.Context) string { ip := c.GetHeader("X-Forwarded-For") if ip != "" { parts := strings.Split(ip, ",") return strings.TrimSpace(parts[0]) } ip = c.GetHeader("X-Real-IP") if ip != "" { return ip } return c.ClientIP() }