前言
在 Web 开发中,我们经常需要获取客户端的 IP 地址。然而,由于 HTTP 协议的限制,服务器只能获取到与其直接通信的设备的 IP 地址,而无法获得请求经过了多少个代理服务器等信息。这种情况下,我们需要使用 "X-Forwarded-For" 头字段来获取客户端真实的 IP 地址。
forwarded-for 就是一款用于解析 "X-Forwarded-For" 头字段的 npm 包。
安装
你可以使用 npm 或者 yarn 来安装 forwarded-for:
npm install forwarded-for --save
或者
yarn add forwarded-for
使用
const forwarded = require('forwarded-for'); const ips = forwarded(req); console.log(ips); // ['client_ip', 'proxy_ip_1', 'proxy_ip_2']
forwarded()
函数接收一个 http.IncomingMessage
对象作为参数,返回一个数组,其中包含了请求经过的所有代理服务器的 IP 地址,以及客户端的真实 IP 地址。
如果请求没有经过代理服务器,则返回仅包含客户端 IP 地址的数组。
注意事项
- forwarded-for 仅解析 "X-Forwarded-For" 头字段,并不会处理其他的代理头字段。
- forwarded-for 不会对 IP 地址进行验证或者检查,返回的结果可能会被伪造或者篡改。
- forwarded-for 在解析多个 IP 地址时,会将最后一个 IP 地址视为客户端的真实 IP 地址。这种情况下可能存在安全隐患,请谨慎使用。
结语
forwarded-for 是一款非常实用的 npm 包,在处理需要获取客户端 IP 地址的场景下,可以帮助我们快速地获取客户端的真实 IP 地址。但是,在使用过程中需要注意其存在的安全隐患。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/53559