Files
nl-im-service/internal/utils/get_client_ip.go
2026-07-08 08:18:58 +08:00

29 lines
488 B
Go

/**
* 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()
}