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

时间:2019-07-16 20:39:59

标签: javascript firebase cors 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);
}

整个云功能(在打字稿中):

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控制台中,我收到一条消息,说明我正在使用标准计划,因此无法访问外部资源。不确定这是标准消息还是我的代码存在实际问题。

1 个答案:

答案 0 :(得分:3)

您不能使用Functions客户端SDK来调用HTTP type functions。您只能使用Functions客户端SDK来调用callable type functions,这些声明在链接的文档中已经看到。

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

如果要调用普通的HTTP类型函数,则应为此使用一些HTTP客户端。