package middleware import ( "net/http" "strings" ) // getClientIP 获取客户端IP func getClientIP(r *http.Request) string { // X-Forwarded-For xff := r.Header.Get("X-Forwarded-For") if xff != "" { ips := strings.Split(xff, ",") if len(ips) > 0 { return strings.TrimSpace(ips[0]) } } // X-Real-IP xri := r.Header.Get("X-Real-IP") if xri != "" { return xri } // RemoteAddr ip := r.RemoteAddr if idx := strings.LastIndex(ip, ":"); idx != -1 { ip = ip[:idx] } return ip } // parseQuery 解析query参数 func parseQuery(query string) map[string]string { m := make(map[string]string) for _, v := range strings.Split(query, "&") { kv := strings.Split(v, "=") if len(kv) == 2 { m[kv[0]] = kv[1] } } return m }