将HTTP函数连接到Firebase托管后,CORS出现问题

我有一个支持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阻止。我已经阅读了文档herehere。我正在使用具有如下所示配置的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

请提供任何帮助。谢谢

jjyyqa 回答:将HTTP函数连接到Firebase托管后,CORS出现问题

不可能限制进入Cloud Functions的请求的来源。如果您的功能允许访问任何外部IP地址,则它必须允许访问所有IP地址。您必须控制访问的唯一方法是要求客户端提供一些凭据,您的函数在调用时可以检查这些凭据。

本文链接:https://www.f2er.com/3167404.html

大家都在问