簡體   English   中英

使用 Firebase 托管和 Cloud Run 時出現 CORS 錯誤

[英]CORS error when using Firebase Hosting and Cloud Run

我有一個具有以下設置的 SPA:

  • 前端:使用 Firebase 托管部署的 React
  • 后端:用 Django 編寫的 GraphQL API 部署在 Cloud Run 上

一切都在本地運行,但是當我部署應用程序並嘗試發出請求時,由於預檢缺少允許源標頭,我收到 CORS 錯誤:

從源“https://project-id.web.app”訪問“https://cloud-run-api-hash.a.run.app/graphql/”已被 CORS 政策阻止:響應預檢請求未通過訪問控制檢查:請求的資源上不存在“Access-Control-Allow-Origin”標頭。 如果不透明響應滿足您的需求,請將請求的模式設置為“no-cors”以在禁用 CORS 的情況下獲取資源。

使用django-cors-headers ,我已經將 Firebase 域添加到我的 Django 設置中的CORS_ORIGIN_WHITELIST

我的firebase.json看起來像這樣:

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "/authenticated/**",  
        "run": {
          "serviceId": "cloud-run-serviceID", 
          "region": "us-central1"    
        }
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ],
    "headers": [ {
      "source": "**/*.@(eot|otf|ttf|ttc|woff|font.css)",
      "headers": [ {
        "key": "Access-Control-Allow-Origin",
        "value": "*"
      } ]
    } ]
  }
}

我的目的是在用戶通過身份驗證並路由到https://project-id.web.app/authenticated后觸發 cloud run 容器,但在登錄應用程序后我沒有看到任何 Cloud Run 日志。 此外,當我嘗試發送任何 HTTP 請求時,我會收到上面顯示的 CORS 錯誤。 不確定這里出了什么問題,因為我嚴格遵循 Cloud Run/Firebase 托管文檔。 任何意見是極大的贊賞。

事實證明,問題出在django-cors-headers 我將允許的域放在CORS_ALLOWED_ORIGINS而不是CORS_ORIGIN_WHITELIST並且它起作用了。 根據文檔,此設置已重命名。 我仍然不確定為什么CORS_ORIGIN_WHITELIST在 Cloud Run 上不起作用……它應該作為別名使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM