Next.js 应用中如何获取访问者真实 IP

阅读时长 3 分钟读完

在前端开发过程中,有时需要获取访问者的真实 IP 地址,以便进行 IP 地址的记录、统计、安全等操作。但是在 Next.js,这并不是一件容易的事情,因为 Next.js 应用的所有请求都是经过服务器代理的,访问者的 IP 地址不会直接传递给客户端。在本文中,我们将探讨如何在 Next.js 应用中获取访问者真实 IP,并提供示例代码作为参考。

方案一:使用中间件获取 IP 地址

在 Next.js 中可以使用中间件来处理 HTTP 请求。针对获取 IP 地址,可以使用 request 对象的 headers 属性来获取 X-Forwarded-For 头信息,该头信息即为客户端的 IP 地址。具体代码实现如下:

通过访问 /api/get-ip 接口,即可获取访问者 IP 地址。但是需要注意的是,X-Forwarded-For 头信息可能会被伪造,因此该方式并不是一种绝对可靠的方法。

方案二:使用第三方服务获取 IP 地址

除了通过中间件获取 IP 地址,还可以使用第三方服务来获取访问者 IP。具体实现方式如下:

-- -------------------- ---- -------
-- -------------------

------ ----- ---- --------

------ ------- ----- -------- ------------ ---- -
  --- -
    ----- -------- - ----- -----------------------------------------------
    ----- -------- - -----------------
    ---------------------- --- -------- ---
  - ----- ------- -
    ---------------------
    ---------------------- ------ ------- -- --- -- -------- ---
  -
-

上述代码调用了 ipify 提供的 API 来获取 IP 地址。由于该服务为公共服务,因此可能存在并发量限制和响应时间延迟等问题。

总结

两个获取 IP 地址的方案各有其优缺点。方案一可以直接从请求头中获取 IP 地址,相对较为简单,但容易被伪造;方案二则是通过第三方服务获取 IP 地址,相对更为可靠,但需要调用第三方服务接口,影响响应时间。在实际应用中需要根据具体场景和需求选择合适的方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f52558f6b2d6eab3dd5440

纠错
反馈