首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firebase函数中运行CORS错误

在Firebase函数中运行CORS错误
EN

Stack Overflow用户
提问于 2022-09-22 12:13:06
回答 1查看 74关注 0票数 1

我创建的函数在本地使用firebase命令可以很好地工作。当我将它部署到firebase函数时,它开始抛出错误:

“CORS策略阻止从'https://us-central1-mysample.cloudfunctions.net/api/configSettings‘处访问https://us-central1-mysample.cloudfunctions.net/api/configSettings 'https://mysample.web.app’:请求的资源上不存在‘访问控制-允许-原产地’标题”

以下是有关该项目的要点&代码:

  1. 使用ExpressJs创建web API
  2. 主机和功能都在同一个Firebase项目中。
  3. 我已经尝试过以下CORS npm软件包的实现

代码语言:javascript
复制
const cors = require('cors')

    var corsOptionsDelegate = function (req, callback) {
    console.log("req.header('Origin') : ", req.header('Origin'))
    var corsOptions;
    if (whitelist.indexOf(req.header('Origin')) !== -1) {
        corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS 
    response
    } else {
        corsOptions = { origin: false } // disable CORS for this request
    }
    callback(null, corsOptions) // callback expects two parameters: error and options
    }

    app.options('*', cors(corsOptionsDelegate));  

  1. 此外,我也尝试了以下方式:

代码语言:javascript
复制
app.use((req, res, next) => {
    const allowedOrigins = ['https://mysample.web.app', 'https://mysample.firebase.webapp'];
    const origin = req.headers.origin;
    console.log("origin : ", origin)
    if (allowedOrigins.includes(origin)) {
         res.setHeader('Access-Control-Allow-Origin', origin);
    }
    res.setHeader('Access-Control-Allow-Methods', 'GET,POST,OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    res.setHeader('Access-Control-Allow-Credentials', true);
    return next();
  });

但没有办法解决我的问题。我必须在Firebase门户中设置什么设置吗?任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-09-26 09:28:38

@Vaira确认通过向"allUsers“.To中添加一个新的角色Cloud Functions Invoker来调用云函数,从而解决了这个问题,必须为用户分配云函数调用程序角色。

若要允许未经身份验证的函数调用,请将云函数调用者角色授予函数上的特殊allUsers主体:引用此文档

  1. Google控制台
  2. 单击要授予访问权限的函数旁边的复选框。
  3. 单击屏幕顶部的权限。将打开“权限”面板。
  4. 单击Add主体。
  5. 在“新建主体”字段中,键入allUsers。
  6. 从“选择角色”下拉菜单中选择角色云函数>云函数调用程序。
  7. 单击保存。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73814430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档