Ctrl K
ComunidadGuías…

pkg/utils/client_ip.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package utils

import (
	"net"
	"net/http"
	"strings"
)

// ClientIP returns the address forwarded by the reverse proxy, or the peer's
// address when no forwarded address is provided. The proxy must sanitize the
// X-Forwarded-For header before forwarding requests to the stack.
func ClientIP(req *http.Request) string {
	if forwarded := req.Header.Get("X-Forwarded-For"); forwarded != "" {
		if ip := strings.TrimSpace(strings.SplitN(forwarded, ",", 2)[0]); ip != "" {
			return ip
		}
	}
	if host, _, err := net.SplitHostPort(req.RemoteAddr); err == nil {
		return host
	}
	return req.RemoteAddr
}