调用云函数时对 CORS 预检选项的 500 错误响应。如何从我的网络应用程序调用云功能并符合 CORS 标准?

500 error response to CORS preflight OPTIONS when calling cloud function. How can I call a cloud function from my web-app and be CORS compliant?

我正在尝试将云功能整合到我的网络应用程序中。 不幸的是,我遇到了我正在努力处理的 CORS 错误。 似乎几乎所有关于 CORS 的文档都使用 XMLHTTPRequests,有些文档使用 fetch api,但我找不到任何关于如何使用 firebase.functions.httpsCallabe()

进行操作的信息

客户代码:

export function bla() {
const callable = firebase.functions().httpsCallable('helloWorld');
    return callable().then(console.log);
}

整个云函数(在打字稿中):

import * as functions from 'firebase-functions';

const cors = require('cors')({ origin: true });

export const helloWorld = functions.https.onRequest((request, response) => {
    cors(request, response, () => {
        response.status(200).send("Hello from Firebase!");
    });
});

这是 chrome 控制台在触发我的 bla() 函数时输出的内容:

在 Firebase 控制台中,我收到一条消息,指出我正在使用标准计划,因此我无法访问外部资源。不确定这是标准消息还是我的代码的实际问题。

您不能使用 Functions 客户端 SDK 调用在链接文档中声明的 HTTP type functions. You can only use the Functions client SDK to invoke callable type functions

可调用函数使用 functions.https.onCall 声明,而 HTTP 函数使用 functions.https.onRequest.

声明

如果你想调用一个普通的 HTTP 类型的函数,你应该为此使用一些 HTTP 客户端。