Ошибка CORS при вызове облачной функции Firebase с помощью httpsCallable () - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь вызвать мои облачные функции Firebase из моего клиента React.

  1. Я могу успешно вызывать эти функции с помощью HTTP-запросов (как описано здесь ). Для этого необходимо настроить полноценное приложение Express в облачной функции.

  2. Теперь я пытаюсь вызывать облачные функции напрямую из моего клиента, используя httpsCallable() (как описано здесь *)1013 *). Похоже, что этот метод имеет несколько преимуществ по сравнению с HTTP-запросами. Однако, используя этот подход, я получаю следующую ошибку CORS:

Доступ к выборке в 'https://us -central1-myapp.cloudfunctions.net / helloWorld 'from origin' http://localhost:3000' заблокировано политикой CORS

Как мне сделать эту работу? Стоит ли это хлопот? Это действительно предпочтительный способ?

Вот моя облачная функция:

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;
};

1 Ответ

1 голос
/ 06 октября 2019

Делая

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

, вы действительно вызываете функцию вызываемого облака , , но , определяя вызываемую функцию следующим образом

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

вы определяете HTTPS облачную функцию , которая отличается .

Вы должны определить вашу облачную функцию как вызываемую, как указано ниже:

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