Я разрабатываю приложение в Firebase и некоторые вызываемые облачные функции HTTPS (node.js) в GCP. Когда я создаю облачную функцию, Google по умолчанию делает ее закрытой. Однако, когда я пытаюсь вызвать любую из облачных функций, появляется ошибка CORS, т.е. "Access to fetch at <url of function> from origin http://localhost:4200" has been blocked by CORS policy..."
. Кроме того, я получаю "Unhandled Promise rejection: internal ; Zone <root>; Task..."
Из других ответов я смог избавиться от этих ошибок, установив разрешения для облачной функции, предоставив allUsers
роль Cloud Functions Invoker
. Это делает функцию publi c. Поэтому любой может хотя бы вызвать его. Я понимаю, что вызываемые функции HTTPS также отправляют некоторые данные аутентификации в переменной context
, которые мы можем использовать для аутентификации запроса. Тем не менее, все еще не кажется безопасным, что кто-либо может хотя бы вызывать функцию, возможно, повторно вызывать ее.
Я также попытался изменить разрешение функции, чтобы ограничить роль вызывающего только службой по умолчанию учетная запись, которую Firebase создает для обработки облачных функций, однако я обнаружил, что это не имеет значения. Я также использую последнюю версию интерфейса командной строки Firebase.
Есть ли лучший способ сделать разрешения для функции менее разрешительными и ограничить права вызывающего лица, сохранив при этом возможность вызывать функцию из приложения firebase?
Заранее благодарим за помощь / предложения.