我有一个支持Cloud功能的后端架构,可与我的React Native App一起使用。现在,我正在尝试构建一个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,() => {;})
,但同时我也不想CORS阻止来自Firebase托管的请求。谷歌搜索后,我发现可以将HTTP函数连接到Firebase托管,并在托管规则下使用rewrites
来访问云函数触发器端点。
rewrites under hosting rule in firebase.json
--------------------------------------------
"rewrites": [
{
"source": "**","destination": "/index.html"
},{
"source": "/signUp","function": "signUp"
}
]
但这也被CORS阻止。我已经阅读了文档here和here。我正在使用具有如下所示配置的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
请提供任何帮助。谢谢