У меня есть бэкэнд-архитектура с облачными функциями, которая работает с моим приложением React Native. Сейчас я пытаюсь создать панель инструментов приложения React, чтобы я мог визуализировать ресурсы и поведение своего приложения. Мой подход остается прежним, перенаправляйте все вызовы на конечную точку облачных функций https://[region]-[project].cloudfunctions.net/[function_name]
.
Проблема в том, что я получаю CORS, блокирующий мой запрос от браузера: это понятно, и решение - set up a middleware to handle CORS
, которое было сделано и работает хорошо.
import * as functions from 'firebase-functions'
import * as cors from 'cors';
const corsHandler = cors({origin: true});
const signUp = functions.https.onRequest((request, response) => {
corsHandler(request, response, () => {;})
.../ signUp logic below
})
Все выглядит хорошо, за исключением того, что я не хочу останавливать проверку CORS, т.е. я хочу удалить corsHandler(request, response, () => {;})
, но в то же время я также не хочу блокировать запросы CORS с хостинга Firebase,После поиска в Google я обнаружил, что могу подключить функции HTTP к хостингу Firebase и использовать rewrites
в соответствии с правилом хостинга для доступа к конечным точкам запуска облачных функций.
rewrites under hosting rule in firebase.json
--------------------------------------------
"rewrites": [
{
"source": "**",
"destination": "/index.html"
},
{
"source": "/signUp",
"function": "signUp"
}
]
Но это также блокируется CORS. Я прочитал документацию здесь и здесь . Я использую Fetch API с конфигурацией, как показано ниже
method: "GET", // POST
mode: "cors", // no-cors, cors, *same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
credentials: "same-origin", // include, *same-origin, omit
headers: {
Authorization: `Bearer ${access_token}`,
"Content-Type": "text/json;application/json;charset=UTF-8"
},
redirect: "follow", // manual, *follow, error
referrer: "no-referrer", // no-referrer, *client
timeout: 20000
Пожалуйста, любая помощь будет оценена. Спасибо