使用httpsCallable()调用Firebase云函数时出现CORS错误

rseugnpd  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(181)

我正在尝试从我的React客户端调用我的Firebase云函数。
1.我能够使用HTTP请求成功调用这些函数(如here所述)。这需要在云功能中设置完整的Express应用程序。
1.现在,我尝试使用httpsCallable()直接从客户端调用云函数(如here所述)。与通过HTTP请求进行调用相比,这种方法似乎有几个优点。然而,使用这种方法,我得到以下CORS错误:
CORS策略已阻止从源“http://localhost:3000”访问“https://us-central1-myapp.cloudfunctions.net/helloWorld”处的提取
我该怎么做?值得这么麻烦吗?这真的是首选的方式吗?
以下是我的云函数:

import * as functions from 'firebase-functions';

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

以下是我如何从我的客户端调用它:

const sayHello = async (): Promise<string> => {
    const helloWorld = firebase.functions().httpsCallable('helloWorld');
    const result = await helloWorld();
    return result.data;
};
2g32fytz

2g32fytz1#

通过做

const helloWorld = firebase.functions().httpsCallable('helloWorld');
const result = await helloWorld();

你确实调用了一个Callable Cloud Function但是通过如下定义被调用的函数

functions.https.onRequest((request, response) => {})

你正在定义一个HTTPS Cloud Function,它是不同的
您应该将Cloud Function定义为Callable,如下所示:

export const helloWorld =  = functions.https.onCall((data, context) => {
  return { response: 'Hello from Firebase!' };
});

相关问题