【问题标题】:Firebase Functions : How to get IP address from client? [duplicate]Firebase 功能:如何从客户端获取 IP 地址? [复制]
【发布时间】:2021-08-28 13:28:20
【问题描述】:

我正在尝试使用 javascript 从 firebase 函数中的客户端获取 IP 地址。为什么需要IP?将可以访问我的功能的 IP 列入白名单。

我的目标:通过 IP 地址访问我的功能

我尝试使用此方法,但对我不起作用,它给了我“未定义”:

exports.getIP = functions.https.onRequest(async (req, res) => {
var call = req.ip
console.log(call);
res.send(call);
});

exports.getIP = functions.https.onRequest(async (req, res) => {
  var call = req.headers['x-forwarded-for']
  console.log(call);
  res.send(call);
  });

当我调用 req.headers 时:

【问题讨论】:

  • x-forwarded-for 是一个有效的标头,并且似乎正在工作。您也可以尝试使用 x-appengine-user-ip 标头。在最坏的情况下,你能console.log(req.headers) 并分享输出吗?
  • @Dharmaraj 我更新了问题,我尝试运行 'x-appengine-user-ip' 但它给了我未定义。

标签: javascript node.js firebase google-cloud-functions


【解决方案1】:

'x-forwarded-for'x-appengine-user-ip 标头都将在您部署云函数时添加。看来您正在使用在 localhost 上运行的 Firebase Functions 模拟器(因为 host 标头是 localhost:5001)。您可以尝试部署函数并记录 IP。

X-Forwarded-For (XFF) 标头是事实上的标准标头,用于标识通过HTTP 代理或负载平衡器连接到 Web 服务器的客户端的原始 IP 地址。 p>

X-Appengine-User-IP 由 App Engine 设置。

当您在本地模拟函数时,两者之间没有代理,因此缺少这些标头。

参考资料:

【讨论】:

  • 最后,它让我免于思考很多。正如你所说,在部署我的云功能后添加了 x-forwarded-for。
猜你喜欢
  • 2018-06-10
  • 2013-05-01
  • 2017-07-06
  • 2016-10-05
  • 2012-03-14
  • 2012-02-16
  • 2018-05-06
  • 2019-01-14
相关资源
最近更新 更多