所以基本上标题说明了一切。
在过去的几个小时里,我一直在开发一个依赖cookie进行身份验证的中间件函数,它非常简单,如下所示:
const authRoute = async (req, res, next) => {
console.log(req.ip);
// some other logic here
return next();
};
app.use('/admin/', authRoute, adminRouter);问题是,我没有修改我的任何其他代码,例如app.set(),甚至app.use()本身,我一直在专门处理这个中间件函数。出于身份验证的目的,我还将此req.ip存储在我的数据库中。
嗯,让我惊讶的是,同样的req.ip对象突然开始导致:
::1在应用程序/服务器似乎无缘无故地重新启动之后。在此之前,它正在向我报告:
::ffff:127.0.0.1我可以验证这一点,因为我在控制台上记录了这一点,并将值也存储在数据库中。

根据记录,req.connection.remoteAddress是相同的,并且我还没有启用任何特殊的设置,比如trust proxy或任何类似的设置,我还没有达到开发的那个阶段。
因此,我现在真的很想知道是什么导致了这种情况,所以任何帮助或意见都是非常感谢的。如果需要,我还可以提供更多详细信息,比如我的bin/www配置。
我在Win7机器上。
发布于 2020-01-11 04:19:26
你可以尝试使用req.connection.remoteAddress,我已经用过很多次了,而且很成功。这个答案是非常清晰的https://superuser.com/questions/668004/why-is-my-localhost-not-127-0-0-1-but-1-and-what-notation-is-that
发布于 2020-01-11 04:32:25
您为localhost获得不同is的原因是,请求有时以IPv4 (::ffff:127.0.0.1)的形式到来,有时以IPv6 (::1)的形式到来。
无论如何,您需要在生产环境中处理这两个版本。
https://stackoverflow.com/questions/59687195
复制相似问题