javascript - 返回网站访问者的 IP 地址而不是 Heroku 服务器

标签 javascript node.js express heroku

所以我试图获取 Heroku 上我的应用程序的访问者的 IP 地址,为此使用 API,该 API 在本地运行良好,但是当我在 Heroku 上部署应用程序时,我得到了 Heroku 服务器的 IP,它是一个express.js应用程序并且正在使用此设置

app.set('trust proxy', true);

我见过很多解决这个问题的方法,但没有一个解决方案适合我。

当我使用时

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

我得到这个结果

clientIp: '::1',

最佳答案

首先,您必须安装此模块npm i ipware

var get_ip = require('ipware')().get_ip;


app.use(function(req, res, next) {
    var ip_info = get_ip(req);
    console.log(ip_info);
    // { clientIp: '127.0.0.1', clientIpRoutable: false }
    next();
});

请注意,结果是对象形式,获取 IP 地址应该很简单

ip_info.clientIp

所以我想这应该有帮助。

关于javascript - 返回网站访问者的 IP 地址而不是 Heroku 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66534579/

相关文章:

node.js - nodejs 有哪些好的消息队列选项?

javascript - Express:在 304 Not Modified 上发送 Content-Type

node.js - 在express-handlebars中包含布局问题

javascript - 在行尾用圆圈连接两个 div

javascript - 在加载 jQuery 之前阻止链接

node.js - GraphicsMagick/ImageMagick 替换所有非透明像素(如 Photoshop 的颜色叠加)

javascript - Nodejs中将Buffer数据对象转换为数组

jquery - 如何在 Express View 之间进行页面转换?

javascript - HTML 单页应用,用浏览器填写用户名和密码

javascript - @async 脚本会在解析器遇到其标签之前运行吗?