首页 > 解决方案 > 在 Firebase 托管中启用 CORS

问题描述

我的 CORS 和我的 Google Cloud 功能遇到了这个非常烦人的问题......

我得到的错误是:

从源“ http://localhost:4200 ”访问 [ My function URL ] 处的 XMLHttpRequest已被 CORS 策略阻止:预检中 Access-Control-Allow-Headers 不允许请求标头字段 access-control-allow-origin回复。

我已经尝试使用以下代码在功能方面处理它:

if request.method == 'OPTIONS':
        headers = {
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'GET',
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Max-Age': '3600'
        }

        return ('', 204, headers)

然后在主返回中添加:

headers = {
            'Access-Control-Allow-Origin': '*'
        }
....

return(json.dumps(data), 200, headers)

这不起作用....

我还尝试了 firebase.json 标头方法,但也无法正常工作......

甚至尝试使用 HttpHeaders 像这样:

const headers = new HttpHeaders() 
      .set("Access-Control-Allow-Origin", "*") 
      .set("Access-Control-Allow-Methods", "POST, GET, OPTIONS") 
      .set('cache-control', 'no-cache')

也不工作.....

然后我尝试使用代理(只是为了检查这是否是实际问题)添加了proxy.config.json,当然在开发中它只是工作......

但问题是,我需要能够将 Angular 应用程序上传到 Firebase 托管,那么如何修复后端的 CORS 错误?

标签: angularfirebasegoogle-cloud-functionsfirebase-hosting

解决方案


那么它现在解决了,问题:

我在云函数(服务器端)和 webApp 端都有 CORS 标头,这在某种程度上是不允许的,所以我只是从 webapp 端删除了代码,并将代码只留在云函数(服务器端)中,这解决了问题...

谢谢大家!


推荐阅读