Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

clientAddress

función Desde 1.7.0

IP del cliente de una petición (desde 1.7), con la misma política que context.clientAddress y rateLimit: la de la conexión que entrega el adaptador (el socket en Node, Bun y Deno; CF-Connecting-IP en Workers) o, con MEEKO_TRUST_PROXY, la entrada de X-Forwarded-For que añadió el proxy de confianza más externo (la n-ésima desde la derecha), sin su puerto. Sin MEEKO_TRUST_PROXY, X-Forwarded-For nunca se lee, porque cualquier cliente puede enviarlo.

Con MEEKO_TRUST_PROXY=cloudflare (desde 1.8), tras Cloudflare Tunnel (cloudflared) y un proxy como Traefik, es la IP de CF-Connecting-IP (o, si falta, de True-Client-IP), pero sólo si la conexión y cada salto de X-Forwarded-For vienen de las redes de MEEKO_TRUSTED_PROXIES (por defecto, loopback y redes privadas). Si un salto viene de fuera, ese salto es el cliente; si la conexión viene de fuera o la cabecera no es una única IP, la de la conexión. Sirve donde no hay RequestContext, como en defineServerMiddleware o en el handler de addServerHandler de un módulo; en el resto, use context.clientAddress.

Sin env, aplica el MEEKO_TRUST_PROXY del entorno (platform.env) de la aplicación que atiende la petición, también en la petición nueva que un middleware pasa a next(). Una petición que no atiende un ServerApp sólo usa la IP de la conexión, salvo que reciba env.

ts
import { clientAddress } from "@meekojs/meeko/server";

Código fuente src/server/runtime/request-context.ts:112

Firma #

ts
function clientAddress(request: Request, env?: unknown): string | undefined

Parámetros #

request Request

Petición que recibe el middleware o el handler.

env unknown opcional

Entorno del que leer MEEKO_TRUST_PROXY y MEEKO_TRUSTED_PROXIES, como process.env; por defecto, el de la aplicación que atiende la petición.

Devuelve #

string | undefined

La IP normalizada (IPv6 en minúsculas, IPv4 mapeada como IPv4), o undefined si no se conoce.

Lanza #

TypeError

Si MEEKO_TRUST_PROXY o MEEKO_TRUSTED_PROXIES no son válidas.

Ejemplo #

ts
// server/middleware/10-visitor.ts
import { clientAddress, defineServerMiddleware } from "@meekojs/meeko/server";

export default defineServerMiddleware((request, next) => {
  // Tras Traefik con MEEKO_TRUST_PROXY=1, la IP del cliente y no la del proxy.
  const ip = clientAddress(request) ?? "desconocida";
  console.log(`${request.method} ${new URL(request.url).pathname} desde ${ip}`);
  return next();
});

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/server/runtime/request-context.ts