如何在 Firebase 云功能中获取客户端 IP 地址?
How to get client IP address in a Firebase cloud function?
当使用Firebase云功能将数据保存到Firebase数据库时,我也想写请求来自的IP地址。
然而,req.connection.remoteAddress
总是returns::ffff:0.0.0.0
。有没有办法获取发出请求的客户端的实际IP地址?
IP 地址 似乎 在 req.headers["x-forwarded-for"]
可用。
参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
请注意,如果中间有代理,中间 IP 地址将连接到最后:
X-Forwarded-For: <client_ip>, <proxy_1 : actual-ip-as-seen-by-google> ...
如果您正在寻找通过 firebase 托管的客户端 ip,您应该使用 header fastly-client-ip
会有真正的客户端 ip。
客户端 IP 在 request.ip
.
示例:
export const pay = functions.https.onRequest((request, response) => {
console.log(`My IP is ${request.ip}`);
});
如果您在云可调用函数中查找 IP 地址或 headers,那么您可以在上下文 object.
中获取信息
例如:
exports.testUser = async (data, context) => {
console.log('------------------------::context::------------------');
if(context.rawRequest && context.rawRequest.headers){
console.log(context.rawRequest.headers);
}
}
在headers你可以得到ip : header { 'x-appengine-user-ip' : 'xxip' } etc.
这对我有用:
const express = require('express');
const logIP = async (req : any, res : any, next : any) => {
const clientIP = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.headers['fastly-client-ip'];
}
const logIPApp = express();
logIPApp.use(logIP);
exports.reportIP = functions.https.onRequest(logIPApp);
这就是我使用 Firebase Cloud Functions 的方法:
const clientIP = req.headers['x-appengine-user-ip'] || req.header['x-forwarded-for']
请注意,这在本地不起作用!
当使用Firebase云功能将数据保存到Firebase数据库时,我也想写请求来自的IP地址。
然而,req.connection.remoteAddress
总是returns::ffff:0.0.0.0
。有没有办法获取发出请求的客户端的实际IP地址?
IP 地址 似乎 在 req.headers["x-forwarded-for"]
可用。
参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
请注意,如果中间有代理,中间 IP 地址将连接到最后:
X-Forwarded-For: <client_ip>, <proxy_1 : actual-ip-as-seen-by-google> ...
如果您正在寻找通过 firebase 托管的客户端 ip,您应该使用 header fastly-client-ip
会有真正的客户端 ip。
客户端 IP 在 request.ip
.
示例:
export const pay = functions.https.onRequest((request, response) => {
console.log(`My IP is ${request.ip}`);
});
如果您在云可调用函数中查找 IP 地址或 headers,那么您可以在上下文 object.
中获取信息例如:
exports.testUser = async (data, context) => {
console.log('------------------------::context::------------------');
if(context.rawRequest && context.rawRequest.headers){
console.log(context.rawRequest.headers);
}
}
在headers你可以得到ip : header { 'x-appengine-user-ip' : 'xxip' } etc.
这对我有用:
const express = require('express');
const logIP = async (req : any, res : any, next : any) => {
const clientIP = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.headers['fastly-client-ip'];
}
const logIPApp = express();
logIPApp.use(logIP);
exports.reportIP = functions.https.onRequest(logIPApp);
这就是我使用 Firebase Cloud Functions 的方法:
const clientIP = req.headers['x-appengine-user-ip'] || req.header['x-forwarded-for']
请注意,这在本地不起作用!