В настоящее время у меня есть приложение Firebase, которое работает локально, когда я использую localhost: 5001 для вызова функций;однако, когда я пытаюсь использовать облачные функции при прямой маршрутизации, я получаю сообщение об ОШИБКЕ: ЗАПРЕЩЕНО, а когда я пытаюсь напрямую извлечь из развернутого приложения Firebase, я получаю ошибку CORS.
Внешний интерфейс вызывает службу, которая извлекает данные из бэкэнда.
const requestOptions = {
method: 'GET',
mode: 'cors',
headers: new Headers({ 'Content-Type': 'application/json' })
};
return fetch("https://us-central1-polling-269dc.cloudfunctions.net/api/polls/get", requestOptions).then(handleResponse);
Я также пытался просто не использовать режим и заголовки, но это не такРабота.Выборка вызывается правильно, но на странице загрузки https://polling -269dc.firebaseapp.com / # / я получаю это сообщение об ошибке:
Доступ к выборке в 'https://us -central1-polling-269dc.cloudfunctions.net / api / polls / get 'from origin' https://polling -269dc.firebaseapp.com 'заблокирован политикой CORS: НетЗаголовок «Access-Control-Allow-Origin» присутствует в запрашиваемом ресурсе.Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса 'no-cors', чтобы получить ресурс с отключенным CORS.
В моей папке функций в моем index.js это функция и обязательный импорт:
const functions = require('firebase-functions');
const express = require('express');
const app = express();
const fire = require("./fire.js");
var database = fire.database();
var auth = fire.auth();
app.get("api/polls/get/", (req, res) => {
var ref = database.ref("polls/");
var query = ref.orderByChild("question");
var sum = [];
query.once("value", (snap) => {
snap.forEach( (childSnap) => {
sum.push(childSnap.val());
});
res.json(sum);
});
});
Я также пытался
app.get("https://us-central1-polling-269dc.cloudfunctions.net/api/polls/get/", (req, res) => {
, который имеет аналогичные результаты.Я подозреваю, что звоню не по адресу или мне нужно что-то подготовить, но я не могу найти информацию об этом.
Вот мой firebase.json, что-то здесь не так?
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "client/build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [ {
"source": "**",
"function": "app"
} ]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
Опять же, это работает, когда я использую localhost и использую firebase serve, но я пытаюсь выяснить это для Firebase Deployment онлайн.Заранее спасибо.