我有一个 Node 服务器,当外部源点击某个 URL 时,它会接收来自外部源的 GET 请求。 “https://appname.herokuapp.com/example”
我希望只有三个特定 IP 可以访问该地址并在我的服务器上运行 GET。
app.get('/example', function (req,res) {
console.log(req.connection.remoteAccess);
if (req.connection.remoteAccess === 'X' || 'X' || 'X') {
//Do stuff
}
}
我正在尝试这个,但每次外部源访问该 URL 时我都会得到不同的 IP。他们说我得到的看起来像是内部网络 IP,而不是外部网络 IP。我这样做错了吗?我只想获取访问该地址的服务器的 IP 并确认它是 3 个经过验证的服务器之一。
编辑:那么没有办法真正安全地确认他们的 IP 吗?他们还在 req.query 中发送一个 key ,并且它位于我的 https herokuapp url 上,所以这是一个安全的设置吗?
最佳答案
正如马克所说:
app.get('/example', function (req,res) {
var ip = req.headers['x-forwarded-for'];
console.log(ip);
if (ip === 'X' || 'X' || 'X') {
//Do stuff
}
}
但更好的地方是在防火墙级别。
关于node.js - 如何获取向 Heroku 上运行的 Node 服务器发送 GET 的服务器的 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338832/