首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express req.ip看似随机地在将本地计算机地址报告为::ffff:127.0.0.1和::1之间切换

Express req.ip看似随机地在将本地计算机地址报告为::ffff:127.0.0.1和::1之间切换
EN

Stack Overflow用户
提问于 2020-01-11 02:31:37
回答 2查看 59关注 0票数 1

所以基本上标题说明了一切。

在过去的几个小时里,我一直在开发一个依赖cookie进行身份验证的中间件函数,它非常简单,如下所示:

代码语言:javascript
复制
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对象突然开始导致:

代码语言:javascript
复制
::1

在应用程序/服务器似乎无缘无故地重新启动之后。在此之前,它正在向我报告:

代码语言:javascript
复制
::ffff:127.0.0.1

我可以验证这一点,因为我在控制台上记录了这一点,并将值也存储在数据库中。

根据记录,req.connection.remoteAddress是相同的,并且我还没有启用任何特殊的设置,比如trust proxy或任何类似的设置,我还没有达到开发的那个阶段。

因此,我现在真的很想知道是什么导致了这种情况,所以任何帮助或意见都是非常感谢的。如果需要,我还可以提供更多详细信息,比如我的bin/www配置。

我在Win7机器上。

EN

回答 2

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2020-01-11 04:32:25

您为localhost获得不同is的原因是,请求有时以IPv4 (::ffff:127.0.0.1)的形式到来,有时以IPv6 (::1)的形式到来。

无论如何,您需要在生产环境中处理这两个版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59687195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档