我在node.js上编写了一个Azure函数。我怎样才能检索调用该函数的客户端的IP地址?
到目前为止我发现了什么:
可以从标题中读取它:
module.exports = function (context, req) {
var ip = req.headers['x-forwarded-for']
}
以这种方式获取ip是否可靠,因为它可以在去往函数的途中轻松更改?
答案 0 :(得分:1)
是的,它是可靠的,因为Azure Web服务器将覆盖x-forwarded-for,因为它知道它是从负载均衡器转发的。
答案 1 :(得分:0)
如果您使用的是express
,请考虑设置app.set('trust proxy');
答案 2 :(得分:0)
我在寻找如何确定客户端IP地址时遇到了这个问题。做了一个快速测试,看来这不再正确。 Azure高兴地将我放在x-forwarded-for
标头中的所有内容转发到节点服务器。但是,它似乎确实在末尾附加了正确的IP。
根据我的研究,似乎“ client-ip”未转发,并且确实包含正确的IP,但我尚无法确认。
下面的屏幕截图来自Postman,其中提供了x-forwarded-for
和client-ip
标头,返回的正文是来自nodeJs Express应用程序中所有标头的简单转储。
app.get("/headers", (req, res) => {
res.send(req.headers)
})
x-forwarded-for
确实包含客户端ip,但也包含我指定的IP。 client-ip
却没有。我目前尚未找到任何文档。如果可以找到,我将尝试使用来源链接更新此答案。