Решение CORS с использованием функции firebase - PullRequest
0 голосов
/ 08 мая 2020

Как вы знаете, мы не можем получить url на стороне клиента из-за CORS. Я пытаюсь создать функцию, которая будет получать файл для меня с правильными заголовками в качестве агента и возвращать его клиенту.

Итак, на Firebase Function:

exports.urlToBlob = functions.https.onRequest((request,response) => {
  cors(request, response, () => {

    var url = "https://..."; //request.query.url;
      fetch (
          url,
          {
             method: 'GET',
             headers: { 'Accept': '*/*' }
          }
       )
       .then ((res) => {console.log(res);return res;})

       .catch((err) => response.status(400).send(err))
   });
});

Я вижу, что он получит доступ к URL-адресу и получит ответ в оболочке simulator , но не в браузере, который ничего не вернет.

Клиент предполагает доступ к нему с помощью:

  var url = "https://us-central1-myproject-6xxxx.cloudfunctions.net/urlToBlob";
        $.get(
        url,
        {url :imgurl, platform : 'xxx'},
        function(data) {
              console.log(data);
        }
       );

Я знаю, что делаю это неправильно, но мне нужно найти способ использовать эту функцию для решения CORS.

1 Ответ

1 голос
/ 08 мая 2020

Пробовали ли вы использовать cors lib из nodejs. Вы можете настроить cors, чтобы разрешить использование cors в вашем экземпляре. Сначала установите cors lib:

npm install cors --save

После этого вы можете настроить cors в приложении основного модуля. Например:

const cors = require('cors')
//cors config
app.use(cors({
  origin: ['https://example.com'] //<-- Here you put the domain you want to call your api
  methods: "GET, POST, PUT, DELETE",
  optionsSuccessStatus:200,
  credentials: true
}))

В вашем коде:

.then ((res) => {console.log(res);return res;})

Вы должны изменить на:

 .then ((res) => {
    console.log(res);
    //return res;
    response.status(200).send(res);
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...