You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase托管Godot网页游戏跨域隔离与SharedArrayBuffer配置问题

问题排查与解决方案

核心错误分析

  1. 无效的SharedArrayBuffer响应头:你配置中的SharedArrayBuffer并非合法HTTP响应头,浏览器无法识别。启用SharedArrayBuffer的唯一正确方式是同时设置Cross-Origin-Embedder-Policy: require-corp和Cross-Origin-Opener-Policy(同域/同站点兼容值),这两个头会自动启用跨域隔离并允许使用SharedArrayBuffer。

  2. 头规则匹配优先级问题:Firebase Hosting的头规则按从上到下顺序匹配,你最后一条/**规则会覆盖前面更精确的规则,但该规则缺少启用跨域隔离必需的Cross-Origin-Embedder-Policy和Cross-Origin-Opener-Policy头,导致iframe加载时游戏页面无法获得正确配置。

  3. iframe跨域加载适配:游戏托管在api.technoviumunlimited.nl,父页面在technoviumunlimited.nl,属于同站点不同子域名,需调整Cross-Origin-Opener-Policy为same-site,允许同站点iframe加载的同时保持跨域隔离状态。

修正后的firebase.json配置

{
  "hosting": {
    "public": "public", 
    "headers": [
      {
        "source": "/games/**",
        "headers": [
          {
            "key": "Cross-Origin-Embedder-Policy",
            "value": "require-corp"
          },
          {
            "key": "Cross-Origin-Opener-Policy",
            "value": "same-site"
          },
          {
            "key": "Cross-Origin-Resource-Policy",
            "value": "cross-origin"
          }
        ]
      },
      {
        "source": "/**/*.wasm",
        "headers": [
          {
            "key": "Cross-Origin-Resource-Policy",
            "value": "cross-origin"
          }
        ]
      },
      {
        "source": "/**/*.css",
        "headers": [
          {
            "key": "Cross-Origin-Resource-Policy",
            "value": "cross-origin"
          }
        ]
      },
      {
        "source": "/**/*.worker.js",
        "headers": [
          {
            "key": "Cross-Origin-Resource-Policy",
            "value": "cross-origin"
          }
        ]
      },
      {
        "source": "/**",
        "headers": [
          {
            "key": "Cross-Origin-Resource-Policy",
            "value": "cross-origin"
          }
        ]
      }
    ],
    "rewrites": [
      {
        "source": "/games/**",
        "destination": "/index.html"
      },
      {
        "source": "**",
        "function": "app",
        "region": "us-central1"
      }
    ]
  },
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ]
    }
  ]
}

关键调整说明

  • 移除所有无效的SharedArrayBuffer头,依赖COEP和COOP头自动启用SharedArrayBuffer。
  • 将游戏路径的Cross-Origin-Opener-Policy从same-origin改为same-site,允许同站点域名的iframe加载游戏,同时保持跨域隔离。
  • 确保/games/**规则优先级高于通用规则,保证游戏页面的index.html能获取到正确的跨域隔离头。

验证步骤

  1. 部署修正配置:运行firebase deploy --only hosting。
  2. 打开浏览器开发者工具网络面板,加载iframe中的游戏页面,检查响应头是否包含:
    • Cross-Origin-Embedder-Policy: require-corp
    • Cross-Origin-Opener-Policy: same-site
  3. 确认错误提示消失,游戏正常加载。

内容的提问来源于stack exchange,提问作者user1405338

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:57:02