被一个 IP 获取坑了好久

2022-06-10

今天的工作基本上就是随便整整,改改测试留下的反馈,修修 🐶🐶ro 的一些参数,需要后端配合调整的地方他那边没弄好我也就搁着了。

晚上心血来潮想弄下「保罗 API Next」的 IP 地理位置获取功能,依旧是反代了一个公开使用的接口作为数据来源,后期整合到「小窝后台」里面,方便进行查阅。

期间我首先查到的是 ctx.response.ip 这个属性,一番调试后发现它始终返回 127.0.0.1,我起初认为可能是直接使用电脑访问所致,想看看能不能借助局域网的其他设备进行调试。打开手机之后发现一直无法访问,我关闭了 MacOS 的防火墙,结果依旧不行!

于是就想着在其他设备上配置一次项目试试看,先是在我的国内测试机上弄了,由于本身是 Nginx 代理的,这种情况可以使用 ctx.headers["x-forwarded-for"] 这种方式读取真实 IP,而本地环境下依旧无法测试,就上了我的 Windows 笔记本。装 NPM 包的过程磕磕绊绊,国内网络环境真的难受,搞了半个多小时还是没弄好,开着全局模式,终端貌似也无法走代理,不像 MacOS 和 Linux 那样一句命令那么方便。

最后发现貌似是 Vite 的启动参数配置问题,需要带上 --host 才可以在局域网内访问,而 MidwayJS 是 Koa 和 Vite 的缝合怪,就按照了 Koa 的模式打印出了局域网访问地址,结果实际上是并不能正常访问的,我认为这也许是一个不太合适的设定。

这下终于是能在局域网环境下访问了,可最前面提到的那个属性依旧返回 127.0.0.1,我麻了。虽说上线问题不大,但总感觉这是一个潜在的问题,是个坑,先留个记录,看看之后能不能把它彻底解决吧==

关于这个话题,《Node.js 安全攻防 - 如何伪造和获取用户真实 IP 》这篇文章讲述的不错,先记录下。

中雨 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君