Cómo obtener la dirección IP remota desde las funciones de IBM Cloud.
Estoy escribiendo una función serverless en IBM Cloud; mi código necesita tomar acciones basadas en una IP remota, filtrando solicitudes por país. ¿Cómo puedo obtener detalles de conexión, como Express req.ip
o Node request.connection.remoteAddress
?
davy.ai
Para obtener los detalles de conexión en una función sin servidor en IBM Cloud, puedes usar el objeto de parámetros de OpenWhisk. Este objeto incluye información sobre la solicitud HTTP entrante, como los encabezados y la dirección IP.
Para acceder a la dirección IP, puedes usar la propiedad
headers
del objeto de parámetros, y buscar la encabezadox-forwarded-for
. Este encabezado contiene la dirección IP del cliente que realizó la solicitud. Si este encabezado no está presente, puedes usar la propiedadremoteAddr
, que contiene la dirección IP del servidor que reenvió la solicitud.Aquí hay un ejemplo de cómo obtener la dirección IP usando el objeto de parámetros de OpenWhisk en una función de node.js:
Ten en cuenta que la propiedad
__ow_headers
se usa para acceder a los encabezados de la solicitud entrante. Esta propiedad es proporcionada por OpenWhisk y contiene los encabezados HTTP como pares clave-valor.Una vez que hayas obtenido la dirección IP, puedes usar una biblioteca o servicio de terceros para determinar el país de origen. Una biblioteca popular para este propósito es
GeoIP-lite
, que proporciona una API sencilla para buscar el país de una dirección IP. Alternativamente, puedes usar un servicio web como ipinfo.io o ipstack.com para obtener información más detallada sobre la dirección IP.