Итак, у меня есть две функции, которые созданы одинаково (но, очевидно, делают разные вещи):
// I have deleted the content, as it is not relevant for the issue. names and everything are the same though
// Disclaimer:
// The FireFunctions element comes from a shared module for backend/frontend and looks like this:
export const FireFunctions = {
users: {
generateFacebookMessengerToken: 'generateFacebookMessengerToken',
getOrderDataFromTokenAndUid: 'getOrderDataFromTokenAndUid'
}
};
// Function 1
exports[FireFunctions.users.generateFacebookMessengerToken] = functions.https.onCall(async (data, context) => {
console.log('stuff 1');
});
// Function 2
exports[FireFunctions.users.getOrderDataFromTokenAndUid] = functions.https.onCall(async (data, context) => {
console.log('stuff 2');
});
// Function 2 (test)
// I have also have tested it with a static name instead of using my shared module but it does make no difference
export const testSomeStuff = functions.https.onCall(async (data, context) => {
console.log('stuff 2');
});
Итак, проблема разворачивается, когда я хочу вызвать функцию из моего angular интерфейса вот так :
// Works
const response = await this.functions
.httpsCallable<void, void>(FireFunctions.users.generateFacebookMessengerToken)().toPromise();
// Does not work
const response = await this.functions
.httpsCallable<void, void>(FireFunctions.users.getOrderDataFromTokenAndUid)().toPromise();
// Does also not work with a static name
const response = await this.functions
.httpsCallable<void, void>('testSomeStuff')().toPromise();
Все три версии отображаются на панели функций, но при вызове регистрируется только первая. Два других получают следующую ошибку:
Доступ для выборки в 'https://us-central1-someproject.cloudfunctions.net/testSomeStuff' из источника 'http://localhost: 8100 ' заблокирован по политике CORS: ответ на предполетный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Если непрозрачный ответ соответствует вашим потребностям, установите для режима запроса значение 'no-cors', чтобы получить ресурс с отключенным CORS. месяцев, а второй я создал недавно, но так и не приступил к работе.