You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署后Firebase应用调用Cloud Function遇FORBIDDEN及CORS错误求助

解决Firebase云函数部署后的CORS与FORBIDDEN错误

看起来你遇到了部署后Firebase云函数的跨域和权限问题,我帮你一步步排查解决:

1. 先修复Express路由的路径错误

你的路由配置少了开头的斜杠,而且用完整URL作为路由是错误的(Express只需要相对路径)。

错误的路由代码:

app.get("api/polls/get/", (req, res) => {

修正后的代码:

app.get("/api/polls/get", (req, res) => {

2. 添加CORS中间件解决跨域问题

线上环境跨域限制严格,必须在Express应用中配置CORS才能让你的托管域名正常访问云函数。

步骤:

  • 在functions文件夹下执行安装命令:
    npm install cors
    
  • 在index.js中导入并配置CORS:
    const functions = require('firebase-functions');
    const express = require('express');
    const cors = require('cors'); // 新增导入
    const app = express();
    const fire = require("./fire.js");
    
    // 配置CORS,仅允许你的托管域名访问(生产环境推荐)
    app.use(cors({ origin: 'https://polling-269dc.firebaseapp.com' }));
    // 如果是开发阶段想临时允许所有域名,可改用:app.use(cors());
    
    var database = fire.database();
    var auth = fire.auth();
    
    // 这里放你修正后的路由代码
    app.get("/api/polls/get", (req, res) => {
      var ref = database.ref("polls/");
      var query = ref.orderByChild("question");
      var sum = [];
      query.once("value", (snap) => {
        snap.forEach( (childSnap) => {
          sum.push(childSnap.val());
        });
        res.json(sum);
      });
    });
    
    // 必须导出Express应用作为云函数(关键!)
    exports.app = functions.https.onRequest(app);
    

3. 调整前端Fetch的调用方式(推荐方案)

你的firebase.json配置了托管重写,所有请求都会转发到app云函数。这种情况下,前端直接用托管域名的相对路径请求即可,避免跨域问题:

修改前端的Fetch代码:

return fetch("/api/polls/get", requestOptions).then(handleResponse);

这样请求会通过托管自动转发到云函数,属于同域请求,不需要额外处理CORS,更安全也更符合Firebase的最佳实践。

4. 解决直接调用云函数URL的FORBIDDEN错误(可选)

如果你坚持要直接调用https://us-central1-polling-269dc.cloudfunctions.net/api/polls/get,除了配置好CORS,还需要检查云函数的权限:

  • 打开Firebase控制台 → 云函数 → 找到app函数 → 点击「权限」
  • 确保allUsers拥有「Cloud Functions Invoker」的权限(注意:开放给所有用户有安全风险,建议结合Firebase Auth做身份验证)

5. 重新部署验证

修改完所有代码后,执行部署命令:

firebase deploy --functions --hosting

本地运行正常是因为firebase serve会自动处理转发和跨域宽松策略,线上环境必须严格配置路由、CORS和权限才能正常工作。

内容的提问来源于stack exchange,提问作者CrumrineCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:01:31