Почему одна функция firebase не передает предварительную проверку cors, а другая -? - PullRequest
0 голосов
/ 07 мая 2020

Итак, у меня есть две функции, которые созданы одинаково (но, очевидно, делают разные вещи):

// 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. месяцев, а второй я создал недавно, но так и не приступил к работе.

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