在 Node.js 中如何获取请求的 IP 地址
Node.js 中的 Web 框架提供了一个 Request 对象,其中包含来自请求实例的信息。 Request 对象通常包括请求客户端的 IP 地址。 如果我们想对请求用户进行地理定位,IP 地址会很有帮助。
本篇文章将介绍如何从 Node.js 中的请求实例中获取客户端 IP 地址。
获取请求中的 IP 地址
请求可以携带不同位置的客户端IP地址。 例如,它可能存储在 HTTP 请求标头(如 x-forwarded-for
)中、request对象的属性(如 request.connection、request.socket、request.info 或 request.raw)中。
无服务器环境提供请求上下文。 例如,在使用 AWS API Gateway 的 AWS Lambda 函数中,我们可能将 IP 地址存储在带有 sourceIp 的身份属性中。
@supercharge/request-ip 包简化了检索请求 IP 地址的过程。 它检查几十个可能的位置并返回找到的 IP 地址。
首先,将包安装为项目的依赖项:
$ npm install @supercharge/request-ip
然后,继续从请求对象中检索 IP 地址,如下所示:
const RequestIp = require('@supercharge/request-ip')
const ip = RequestIp.getClientIp(request)
将请求对象传递给 RequestIp.getClientIp(request) 函数,它会返回 IP 地址(如果没有找到,则返回未定义)。
在 Express/hapi/Fastify/Koa/Co 等框架中检测 IP 地址。
根据自己选择的 Web 框架和用例,可能需要在中间件或路由处理程序中检索 IP 地址。
下面是两个基本示例,展示了如何在 Express 中间件和 hapi 路由处理程序中检索 IP 地址:
简单的 Express 中间件示例
const RequestIp = require('@supercharge/request-ip')
const expressMiddleware = function (req, res, next) {
req.ip = RequestIp.getClientIp(req)
next()
}
简单的 hapi 路由处理程序示例:
const Hapi = require('@hapi/hapi')
const RequestIp = require('@supercharge/request-ip')
const server = new Hapi.Server({
host: 'localhost'
})
server.route({
method: 'GET',
path: '/login',
handler: (request, h) => {
const ip = RequestIp.getClientIp(request)
return h.response(ip)
}
})
从请求实例中检索客户端的 IP 地址时,@supercharge/request-ip
包会很有用!
好了,上面就是在 Node.js 中获取客户端请求的IP地址的方式。
相关文章
Node.js 中的 HTTP 发送 POST 请求
发布时间:2023/03/27 浏览次数:200 分类:Node.js
-
在本文中,我们将学习如何使用 Node.js 使用第三方包发出发送 post 请求。
Node.js 与 React JS 的比较
发布时间:2023/03/27 浏览次数:137 分类:Node.js
-
本文比较和对比了两种编程语言,Node.js 和 React。React 和 Node.js 都是开源 JavaScript 库的示例。 这些库用于构建用户界面和服务器端应用程序。