并非所有标头都与Firebase onRequest一起显示

时间:2019-07-19 00:36:08

标签: node.js firebase express google-cloud-firestore google-cloud-functions

我试图在制作一个小项目时学习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地址

2 个答案:

答案 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标头)。