Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

clientAddress

función Since 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";

Source code src/server/runtime/request-context.ts:112

Firma #

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

Parameters #

request Request

Petición que recibe el middleware o el handler.

env unknown optional

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.

Returns #

string | undefined

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

Throws #

TypeError

Si MEEKO_TRUST_PROXY o MEEKO_TRUSTED_PROXIES no son válidas.

Example #

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();
});

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/server/runtime/request-context.ts