如何在IBM Cloud Functions中获取请求的远程IP地址
IBM Cloud 无服务器函数获取客户端远程IP方案
- IBM Cloud 无服务器函数(基于OpenWhisk架构)的所有请求元数据都内置在入口函数的入参中,你不需要引入Express这类框架,也不需要调用Node.js底层的连接属性,直接从系统透传的字段取值即可
- 客户端真实IP默认存放在请求头
x-forwarded-for中,你可以从入参的__ow_headers字段直接获取:
// 无服务器函数入口 function main(params) { // x-forwarded-for可能包含多级代理IP,第一个值为真实客户端IP const rawForwardedIp = params.__ow_headers['x-forwarded-for']; const clientIp = rawForwardedIp ? rawForwardedIp.split(',')[0].trim() : null; // 拿到clientIp后即可执行国家过滤等业务逻辑 return { statusCode: 200, body: { clientIp: clientIp } }; }
- 如果你需要其他连接相关的请求信息,都可以遍历
__ow_headers字段查询,所有公网请求的标准HTTP头都会透传到这个对象中 - 测试注意:如果直接在IBM Cloud控制台的函数测试界面触发调用,没有真实公网请求链路,
x-forwarded-for头会为空,走API网关绑定的公网触发地址调用即可正常拿到IP值
内容的提问来源于stack exchange,提问作者pierpy
相关产品推荐
相关产品推荐

