如何在Firebase云功能中获取客户端IP地址?

tuo*_*alo 11 ip-address firebase google-cloud-functions

使用Firebase云功能将数据保存到Firebase数据库时,我还想写入请求来源的IP地址.

但是,req.connection.remoteAddress总是返回::ffff:0.0.0.0.有没有办法获取发出请求的客户端的实际IP地址?

tuo*_*alo 16

编辑:这似乎已经过时了.看到另一个答案.

IP地址似乎可用于req.headers["x-forwarded-for"].但是,我没有在文档中找到关于此的官方信息.

另请注意,如果客户端本身发送eg X-Forwarded-For: 1.2.3.4,则连接值:

"x-forwarded-for":"1.2.3.4, actual-client-ip-as-seen-by-google"
Run Code Online (Sandbox Code Playgroud)


Luk*_*uke 14

客户端 IP 位于request.ip.

例子:

export const pay = functions.https.onRequest((request, response) => {
  console.log(`My IP is ${request.ip}`);
});
Run Code Online (Sandbox Code Playgroud)

  • 当使用可调用函数(`functions.https.onCall((data, context) => {...})`)时,它是`context.rawRequest.ip` (9认同)
  • 谢谢卢克,好吧,我的错(但又是这样吗?) - 我正在使用模拟器,它是用来模拟东西的。结果它只包含一些预期的属性。对于未来的读者,不要在本地进行测试。如果您有 https.onCall,则使用“functions.logger.log(context.rawRequest.headers);”来查看商品。 (3认同)

小智 8

如果您正在通过Firebase托管寻找客户端IP,则应使用标头,fastly-client-ip其中将包含真实的客户端IP。

  • 我实际上认为这是垃圾邮件,但他们将其从“x-forwarded-for”更改为“fastly-client-ip”。感谢您发布此更新。 (2认同)