可从任意前端调用Firebase Cloud Functions是否正常?规则不生效问题咨询
问题解答
1. 直接通过axios调用云函数属于正常现象
你部署的是HTTPS触发类型的Cloud Functions,本身就是对外公开的HTTP服务端点,只要知道对应的URL,任何HTTP客户端(包括axios、curl、Postman等)都可以直接发起请求,和前端是否引入Firebase SDK、是否执行初始化没有任何关系,这是Cloud Functions的原生设计,和cors中间件、axios特性没有因果关联:
- cors中间件的作用只是解决浏览器跨域请求限制,让你的前端站点可以正常跨域调用这个云函数,并不会改变云函数本身对外公开的属性
- axios只是通用的HTTP请求库,只要是公开可访问的HTTP接口都可以正常调用
2. Firestore安全规则不生效的原因
你配置的Firestore安全规则仅对客户端SDK(前端/移动端直接连接Firebase服务的场景)生效,而你在云函数中使用的是firebase-admin服务端特权SDK,Admin SDK默认会跳过所有Firestore安全规则的校验,拥有数据库的全量读写权限,所以就算你把规则设为全拒,云函数依然可以正常读写数据。
如果需要限制云函数的访问权限,你需要自行在云函数中增加鉴权逻辑,常见方案如下:
- 前端集成Firebase Auth实现用户登录,登录后获取用户的ID Token
- 前端调用云函数时,将ID Token放在请求头中携带
- 云函数接收到请求后,先调用Admin SDK的校验接口验证ID Token的合法性,验证通过才执行后续业务逻辑,否则直接返回401未授权
3. firebaseConfig的作用
firebaseConfig是Firebase提供给客户端SDK的初始化配置参数,作用是告诉客户端SDK需要连接的Firebase项目信息、服务地址等,只有当你在前端/移动端直接使用Firebase客户端SDK调用服务(比如直接连接Firestore、使用客户端SDK调用云函数、使用Firebase Auth、Storage等服务)时才需要用到。
如果你只是通过普通HTTP请求调用云函数,不需要引入Firebase客户端SDK,自然也不需要用到firebaseConfig。
内容的提问来源于stack exchange,提问作者Ahmet Yazıcı
相关产品推荐
相关产品推荐

