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

Firebase Function配置域名白名单出现TypeError错误如何解决

问题原因
  • 核心报错原因是cors库的调用方式错误:cors库的正确使用逻辑是先传入配置项生成中间件函数,再将请求对象req、响应对象res、后续执行回调传入该中间件函数。你当前代码直接将配置项作为第一个参数传入cors调用,导致参数匹配错位,cors内部读取请求origin时找不到正确的req对象,抛出TypeError: Cannot read property 'origin' of undefined错误。
  • 存在边界场景隐患:当请求没有携带Origin头时(比如本地Postman调试、同域直接调用),origin参数会为undefined,如果你的白名单没有兼容这种情况,也会触发异常拦截。
修复方案

调整cors调用逻辑即可,修复后完整代码如下:

const domainsList =  require('./domains');
const cors = require('cors');

const corsOptions = {
    origin: function (origin, callback) {
      // 如果你不需要允许无Origin的调试请求,可以删除 || !origin 这段判断
      if (domainsList.indexOf(origin) !== -1 || !origin) {
        callback(null, true)
      } else {
        callback(new Error('Not allowed by CORS'))
      }
    }
  };

// 先传入配置生成cors中间件实例
const corsMiddleware = cors(corsOptions);

exports.sendEmail = functions.https.onRequest((req, res) => {
    // 按正确顺序传入参数调用中间件
    corsMiddleware(req, res, () => { 
         console.log("Domain Whitelisted")
         // 此处补充你原本要执行的接口业务逻辑
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:24:03