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

标签 javascript firebase google-cloud-functions preflight

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

客户端代码:

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

整个云函数(在 typescript 中):

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() 函数时输出的内容: Screenshot of the console output

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

最佳答案

您不能使用 Functions 客户端 SDK 来调用 HTTP type functions .您只能使用 Functions 客户端 SDK 来调用 callable type functions如您在链接文档中看到的那样声明。

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

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

关于javascript - 调用云函数时对 CORS 预检选项的 500 错误响应。如何从我的网络应用程序调用云功能并符合 CORS 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57065116/

相关文章:

angular - 我应该如何将日期输入与 Angular Fire 中的字段时间戳进行比较

javascript - 通过类名获取第二个元素(如果存在)

javascript - 禁用滚动但保留滚动条 CSS

javascript - 测试是否存在嵌套的 JavaScript 对象键

android - 如何阻止 Firebase 中的新推送通知被旧推送通知替换?

javascript - firebase.auth().createUserWithEmailAndPassword Undefined 不是函数

firebase - 如何在 Cloud Firestore 中保存来自 Cloud Function 的文档引用?

javascript - Firecloud 功能未触发?

python - 从云源存储库部署时不会触发 Firestore 云功能

javascript - 如何在 SonarQube 中分析以 .php 文件编写的 JavaScript 代码