云函数ip白名单仅在unicloud控制台服务空间安全策略中配置,用于限制https触发器的外部访问ip,需高级版/企业版支持,免费版需用nginx或代码校验等替代方案。

云函数 IP 白名单在哪配?不是在 manifest.json 里
IP 白名单配置不在前端项目文件中,也不在 manifest.json 或 vue.config.js 里。它只存在于 uniCloud 控制台的服务空间安全策略中,且仅对「云函数被外部 HTTP 请求触发」的场景生效(比如你把云函数 URL 化后供第三方系统调用)。
常见误操作是去 HBuilderX 里改配置、或在云函数代码里写 if (event.ip !== 'xxx') throw —— 这类手动校验既不安全也不可靠,绕过请求头就能伪造。
- 真正起作用的是 uniCloud 控制台中服务空间的「HTTPS 触发器 IP 白名单」设置
- 该功能目前仅在阿里云和腾讯云的高级版/企业版服务空间中可用(免费版不支持)
- 配置后,只有白名单内的 IP 才能通过 HTTPS URL 访问该云函数,其他请求直接 403 拒绝,不进函数逻辑
如何开启并配置云函数 HTTPS 触发器 IP 白名单
登录 uniCloud 控制台,进入对应服务空间,按路径操作:
- 左侧菜单 →「云函数/云对象」→ 选择目标云函数 → 点击「配置」
- 勾选「启用 HTTPS 触发器」(必须先开启,IP 白名单才可配置)
- 展开「IP 白名单」输入框,填入允许访问的 IP 或 CIDR 段,例如:
192.168.1.100、203.0.113.0/24 - 多个条目用英文逗号分隔,注意不能有空格:
1.2.3.4,2001:db8::/32 - 保存后等待约 60 秒生效;修改后旧请求可能仍缓存命中,建议清浏览器或 Postman 缓存再试
为什么 request 报错“服务空间不在白名单中”跟 IP 白名单无关
这个错误提示常被误读。它实际指「你云函数里用 uniCloud.httpclient.request() 去请求了外部域名,但那个域名没加到服务空间的『域名白名单』里」,和 IP 白名单完全不是一回事。
两者控制方向相反:
-
IP 白名单:限制「谁可以调用我的云函数」(入向) -
域名白名单:限制「我的云函数可以请求哪些外部地址」(出向)
如果你的云函数报这个错,要立刻去控制台的「外网访问配置」→「域名白名单」里加目标域名,比如 api.example.com,而不是折腾 IP。
没高级版怎么办?替代方案要盯住边界
免费版或基础版服务空间不开放 IP 白名单配置,但仍有可控手段:
- 用
uniCloud.httpclient替代原生request:它走内网通道,不受域名白名单限制,也天然隔离公网 IP 源头 - 云函数内部做简单 IP 校验(仅作兜底):
if (!['10.0.0.1', '203.0.113.5'].includes(event.headers?.['x-real-ip'] || event.clientIP)) throw new Error('IP denied') - URL 化云函数时,配合 Nginx 或 CDN 层做 IP 限制:在反向代理侧拦截,比云函数层更早、更稳
最后提醒一句:IP 白名单只拦得住合法流量,对恶意扫描或代理穿透无能为力。真正敏感的操作(如后台管理、数据导出),得靠 token 鉴权 + 权限模型,别只押注 IP 这一层。











