为 Firebase 云功能启用 Cors

Posted

技术标签:

【中文标题】为 Firebase 云功能启用 Cors【英文标题】:Enable Cors for Firebase Cloud Functions 【发布时间】:2018-08-27 07:00:12 【问题描述】:

我正在尝试为我的 http 云函数启用 cors。但是,即使关注this example that uses cors,尝试fetch 时,它仍然给我错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

这是我的云功能:

const functions = require('firebase-functions');
const cors = require('cors')(origin: true);

exports.foo = functions.https.onRequest((req, res) => 
    return cors(req, res, () => 
        let format = req.query.format;
        if (!format) 
            format = req.body.format;
        

        //do stuff

    );
);

这是我获取的方式:

fetch("https://us-central1-my-database.cloudfunctions.net/foo", 
    method: "POST", 
    body: JSON.stringify(data),
    headers: 
      "Content-Type": "application/json"
    
).then((res) => 
    // ...
).catch((err) => 
    // ...
);

为什么 cors 不起作用,我该如何解决?

【问题讨论】:

试着看看这个案例:(***.com/questions/49178210/…),它非常相似,它有一个答案,解释了如何在 Firebase Cloud 功能上启用 CORS。 【参考方案1】:

尝试使用带有 default parameters 的 cors


    "origin": "*",
    "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
    "preflightContinue": false,
    "optionsSuccessStatus": 204

在您的情况下,您只需要更改一行:

// code...

// const cors = require('cors')(origin: true);
const cors = require('cors')();

// code...

【讨论】:

以上是关于为 Firebase 云功能启用 Cors的主要内容,如果未能解决你的问题,请参考以下文章

为Nuxt.js部署云功能错误

在 Firebase Cloud 功能中启用 Cors

错误:HTTP 错误 400,请求有错误。 Firebase Firestore 云函数

firebase - 从可调用云函数访问数据库时应用检查失败

如何在 Play 商店中发布的 apk 中启用 Firebase 云消息传递

Firebase 的云功能 - 即使我正在为 firebase-admin 功能发出出站 http 请求,也会出现网络错误