我试图在制作一个小项目时学习Firebase,我需要在其中存储IP地址到我的系统中。
但是我意识到它不能像我以前使用Express一样工作。 我需要与这个要点完全相同的结果:https://gist.github.com/katowulf/6fffffb45ee5cbfbca6c3511e5d19528#gistcomment-2674393
但是对我来说,做同样的事情不起作用,我没有那么多的标头,也没有得到客户端的IP地址。
exports.getPolls = functions.region('europe-west1').https.onRequest((req, res) => {
console.log(util.format(req.headers))
});
标题是我
headers:
{ host: 'localhost:5001',
connection: 'keep-alive',
'upgrade-insecure-requests': '1',
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3370.152 Safari/537.36',
accept:
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en,nl;q=0.9,tr;q=0.8',
cookie: 'io=AVNO7ouAHOYCkVK8ADSD',
'if-none-match': 'W/"5-qvTGHdzV6LKavt4PO0gs2a6pQ00"'
},
我需要客户端IP地址
答案 0 :(得分:0)
尝试一下:
exports.myip = functions.https.onRequest((req, res) => {
console.log(req.headers['x-forwarded-for']);
return res.status(200).send(req.headers['x-forwarded-for'].toString());
});
答案 1 :(得分:0)
此问题已解决: https://github.com/firebase/firebase-functions/issues/541
简短说明:
进行firebase serve
时,请求标头来自没有预期标头的仿真器,firebase deploy
是您需要做的。
当您像我一样控制台日志时,转到firebase console
>函数(选择函数)>日志,将显示预期的标头(带有x-forwarded-for
标头)。