繁体   English   中英

如何使用Express Framework使用Node.js获取远程客户端的本地IP地址?

[英]How do i get local ip address of a remote client with node.js using express framework?

我刚遇到一个任务,我需要获取正在访问服务器上REST api的远程客户端的本地ip地址,我没有使用任何负载平衡器(因为目前对此我一无所知),在我的PC上本地运行,我将使用ngrok工具将其暴露于互联网,该工具托管我的应用程序并使之可通过互联网访问。 我将与您分享到目前为止的工作,但这不能满足我的需要,因为它仅获取远程客户端的公共IP地址,这意味着,如果两个不同的用户正在同一网络上访问API,则使用此代码,其IP地址的报告方式相似,

RedisRouter.post('/incrementvisit', async (req: Request, res: Response, next: NextFunction) => {
try {
    console.log('req.ip', req.ip);
    console.log('request.connection.remoteAddress==================================', req.connection.remoteAddress);
    var ip = req.headers['x-forwarded-for'];
    console.log('ip from headers -------------->', ip);

    console.log('api after trimming', ip);
    res.send(await rs.visitCounter(req.body.name,ip));
} catch (error) {
    console.log(error);
    next(error);
}
});

对于所有从同一网络请求api的用户,这总是给我相同的IP地址,这是他们的公共IP地址,而不是本地的IP地址。 基本上,我需要跟踪对我们的API执行ping操作的不同用户的数量,而且我无法使用相同的IP地址来说明从同一网络向API请求API的两个不同的人。

另外,请为我提供一些有关使用Web代理和Web网络为开发人员的良好初学者水平的阅读建议。 谢谢,保佑。

我不确定哪个服务器ngrok正在运行,但是您是否尝试过:

var ip = req.headers["x-real-ip"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM