我正在编写一个Firebase函数,专门用于Dialogflow聊天机器人的实现。无论我如何测试,我都很难获得准确的客户端IP地址。
我在各种帖子中看到了读取客户端IP的各种方法,但它们要么是undefined
,要么是来自其数据中心的内部Google IP。
我试过阅读:
"x-forwarded-for" header
req.connection.remoteAddress
req.ip
req.ips (collection of all of them, there is only ever 1 in the collection)
任何帮助都将不胜感激。我正在尝试记录有关用户交互的分析,但现在IP都不正确。
我尝试了这里提供的以下代码:
const functions = require('firebase-functions');
const util = require('util');
exports.helloWorld = functions.https.onRequest((req, res) => {
// For Firebase Hosting URIs, use req.headers['fastly-client-ip']
// For callable functions, use rawRequest
// Some users have better success with req.headers['x-appengine-user-ip']
const ipAddress = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
const headers = JSON.stringify(req.headers, null, 2);
const message = util.format("<pre>Hello world!nnYour IP address: %snnRequest headers: %s</pre>", ipAddress, headers);
res.send(message);
});
在测试时(即使是使用移动数据(,它返回了呼叫者的公共IP,而不是谷歌内部IP。
如果尝试此操作,是否继续获取内部IP?