Firebase CORS проблема - PullRequest
       26

Firebase CORS проблема

0 голосов
/ 05 октября 2018

Я создал приложение реагирования и развернул его на базе Firebase.Я получаю эту ошибку всякий раз, когда пользователь ищет.

Failed to load https://food2fork.com/api/search?key=0882376145a8bcae6c3cee&q=fish&count=50: Redirect from
    'https://food2fork.com/api/search?key=0882376145a8107c5946c3cee&q=fish&count=50' to
    'https://www.food2fork.com/api/search
    key=0882376145a8bcae390107c5946c3cee&q=fish&count=50'
    has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is 
present on the requested resource. Origin 'https://recipe-finder-26e0e.firebaseapp.com' is therefore not allowed access.

Поскольку я новичок в этом, я не могу понять, как включить CORS в firebase, что, я думаю, является проблемой.Если кто-нибудь может сказать мне, как включить CORS, я был бы благодарен. Спасибо.

Редактировать: Ссылка на исходный код -> https://github.com/AdiBev/Recipe-Finder

Обновление: я не понял в начале, чтоCORS должен быть обработан серверной частью.Спасибо @Ben.Ayoub за объяснение мне.

Если это поможет другим людям, таким как я, у которых возникла такая же проблема, я нашел отличную статью, и там упоминаются некоторые прокси.ссылка ---> https://gist.github.com/jesperorb/6ca596217c8dfba237744966c2b5ab1e

1 Ответ

0 голосов
/ 05 октября 2018

В дополнение к Бен.Решение Ayoub может стоить изучить функции HTTPS Callable , если только ваше приложение пытается установить связь с функцией и не является частью более широкого внешнего API.

Они работают аналогично конечным точкам HTTPS, но избавляют от головной боли CORS.

import * as functions from 'firebase-functions';

export const listener = functions.https.onCall((data, context) => {
  if (data) {
    throw new functions.https.HttpsError('invalid-argument');
  }

  return {
    some: 'json',
  };
}

Вам не нужно использовать параметры request и response, как в облачной функции конечной точки HTTP.

Он принимает JSON как context и возвращает простой объект JSON.

Редактировать

Чтобы ответить на исходный вопрос, облачные функции могут использоватьCORS

import * as functions from 'firebase-functions';

const cors = require('cors')({ origin: true });

export const listener = functions.https.onRequest((req, res) => {
  cors(req, res, () => {
    return;
  });

  // cloud function logic

  res.json({ some: 'json' });
});
...