вызываемые функции firebase CORS / внутренняя ошибка - PullRequest
0 голосов
/ 28 января 2020

Я встроил вызываемые функции в мой Firebase API с реагировать на клиента. Я использую эмуляторы Firebase для эмуляции вызываемых функций для локального тестирования на localhost: 5000. При локальном вызове эмулируемых функций они работают отлично, однако при развертывании возвращают ошибку.

Вот мой клиентский вызов:

let functions = firebase.app().functions('europe-west2');

if (process.env.NODE_ENV === 'development') {
  functions.useFunctionsEmulator(process.env.REACT_APP_FIREBASE_CALLABLE);
}

export const listTrainers = () => async dispatch => {
  try {
    let listTrainersFunction = functions.httpsCallable('listTrainers');
    let request = await listTrainersFunction();
 }
}

Мой REACT_APP_FIREBASE_CALLABLE установлен на http://localhost: 5001 локально и не используется при развертывании.

У меня запущены эмуляторы firebase, которые эмулируют мои функции локально по адресу:

functions[listTrainers]: http function initialized (http://localhost:5001/app-name/europe-west2/listTrainers).

Это отлично работает, и все данные восстановлено, как и ожидалось. Однако, когда я развертываю свои функции и пытаюсь выполнить вызываемую функцию из моего клиента в производственной среде, я получаю следующие ошибки:

Access to fetch at 'https://europe-west2-app-name.cloudfunctions.net/app-name/europe-west2/listTrainers' from origin 'https://app-name.herokuapp.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

index.cjs.js:604 POST https://europe-west2-app-name.cloudfunctions.net/app-name/europe-west2/listTrainers net::ERR_FAILED

На моей панели управления Firebase функции перечислены следующим образом:

https://europe-west2-app-name.cloudfunctions.net/listTrainers

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

Любая помощь?

1 Ответ

0 голосов
/ 28 января 2020

Поскольку ваш запрашивающий и запрашиваемый источник отличаются,

вы можете добавить это промежуточное ПО CORS в вашу облачную функцию:

{ ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...