如何在Azure Functions node.js中获取客户端IP地址?

时间:2017-06-19 15:02:36

标签: node.js azure azure-functions

我在node.js上编写了一个Azure函数。我怎样才能检索调用该函数的客户端的IP地址?

到目前为止我发现了什么:

  1. 对同一问题answer,但使用C#。
  2. 可以从标题中读取它:

    module.exports = function (context, req) {
        var ip = req.headers['x-forwarded-for']    
    }
    
  3. 以这种方式获取ip是否可靠,因为它可以在去往函数的途中轻松更改?

3 个答案:

答案 0 :(得分:1)

是的,它是可靠的,因为Azure Web服务器将覆盖x-forwarded-for,因为它知道它是从负载均衡器转发的。

答案 1 :(得分:0)

如果您使用的是express,请考虑设置app.set('trust proxy');

有关更多信息,请检查express manual page on 'Express behing proxies'

答案 2 :(得分:0)

我在寻找如何确定客户端IP地址时遇到了这个问题。做了一个快速测试,看来这不再正确。 Azure高兴地将我放在x-forwarded-for标头中的所有内容转发到节点服务器。但是,它似乎确实在末尾附加了正确的IP。

根据我的研究,似乎“ client-ip”未转发,并且确实包含正确的IP,但我尚无法确认。

下面的屏幕截图来自Postman,其中提供了x-forwarded-forclient-ip标头,返回的正文是来自nodeJs Express应用程序中所有标头的简单转储。

app.get("/headers", (req, res) => {
  res.send(req.headers)
})

enter image description here

x-forwarded-for确实包含客户端ip,但也包含我指定的IP。 client-ip却没有。我目前尚未找到任何文档。如果可以找到,我将尝试使用来源链接更新此答案。