Cómo Crear un Middleware para Obtener X-REAL-IP y X-Forwarded-For en las Llamadas HTTP con Node.js y Express

Tiempo de lectura: 2 minutos

En Node.js, puedes utilizar middlewares en Express.js para personalizar el manejo de las solicitudes HTTP antes o después de que lleguen a las rutas. En este tutorial, aprenderás a crear un middleware que extraiga las cabeceras X-REAL-IP y x-forwarded-for de las llamadas HTTP entrantes en tu aplicación Express.

Requisitos Previos:

  1. Node.js instalado en tu sistema.
  2. Conocimiento básico de Node.js y Express.

Paso 1: Configura tu Entorno
Asegúrate de tener Node.js instalado en tu sistema. Puedes descargarlo desde el sitio web oficial de Node.js.

Paso 2: Crea una Aplicación Express
Crea una aplicación Express básica en un archivo JavaScript (por ejemplo, app.js):

const express = require('express');
const app = express();

// ... Configura tus rutas y lógica de la aplicación aquí

app.listen(3000, () => {
  console.log('Servidor Express en funcionamiento en el puerto 3000');
});

Paso 3: Crea un Middleware
Crea un middleware que actuará como tu interceptor. Este middleware tomará tres argumentos: req, res, y next. El tercer argumento, next, representa la función siguiente que se ejecutará después de que el middleware realice su tarea.

function realIpMiddleware(req, res, next) {
  // Extrae la cabecera X-REAL-IP si está presente
  const realIp = req.get('x-real-ip');

  // Extrae la cabecera FORWARD si está presente
  const forwardHeader = req.get('x-forwarded-for');

  // Asigna los valores a las variables si están presentes
  if (realIp) {
    req.ip = realIp;
  }

  if (forwardHeader) {
    req.forwarded = forwardHeader;
  }

  // Llama al siguiente middleware o ruta en la cadena de manejo de solicitudes
  next();
}

En este ejemplo, estamos extrayendo las cabeceras X-REAL-IP y x-forwarded-for si están presentes en la solicitud y asignándolas a las propiedades req.ip y req.forwarded. Luego, llamamos a next() para continuar con el siguiente middleware o ruta.

Paso 4: Usa el Middleware
Utiliza el middleware en tu aplicación Express antes de tus rutas:

app.use(realIpMiddleware);

// ... Configura tus rutas después del middleware

Paso 5: Crea una Ruta de Ejemplo
Añade una ruta de ejemplo para probar el middleware:

app.get("/", (req, res) => {
  // Accede a las propiedades ip y forwarded si se han asignado correctamente
  const realIp = req.ip;
  const forwardHeader = req.forwarded;

  res.json({ "x-real-ip": realIp, "x-forwarded-for": forwardHeader });
});

Paso 6: Ejecuta tu Aplicación
Ejecuta tu aplicación Express:

node app.js

Paso 7: Prueba tu Middleware
Realiza una solicitud a tu aplicación Express y verifica que las cabeceras X-REAL-IP y x-forwarded-for se extraigan correctamente y se muestren en la respuesta.

Conclusión:
Has aprendido cómo crear un middleware en Node.js y Express para obtener las cabeceras X-REAL-IP y x-forwarded-for de las llamadas HTTP entrantes. Los middlewares te permiten personalizar el manejo de las solicitudes HTTP y realizar tareas adicionales antes o después de que una solicitud sea manejada por tu aplicación Express. Puedes adaptar este enfoque para trabajar con otras cabeceras o realizar otras tareas de personalización según tus necesidades específicas.

Deja un comentario