尝试在 firebase 项目中添加 cors.json 文件时出错

问题描述 投票:0回答:1

我在尝试将 cors.json 文件添加到我的 Firebase 项目时遇到错误。 我有一个使用 React 创建的预算应用程序,由身份验证和云 Firestore 提供支持,并由 Firebase 提供。

在我的本地主机上一切正常:我登录,添加费用等。但是当我将应用程序部署到 render.com 时,我偶然发现了一个错误:

访问“https://firestore.googleapis.com/google.firestore.v1.Firestore/Listen/channel?VER=8&database=projects%2Fbudget-app-react-3f8a6%2Fdatabases%2F(default)&RID=” 2186&CVER=22&X-HTTP-Session-Id=gsessionid&zx=qv2osyi6ocl&t=1' 来自源“https://bud-app.onrender.com”已被 CORS 策略阻止:“Access-Control-Allow-Origin”的值当请求的凭据模式为“include”时,响应中的标头不得为通配符“*”。

logger.ts:115 [2023-08-03T17:41:34.095Z] @firebase/firestore:Firestore(9.23.0):无法到达Cloud Firestore后端。连接失败1次。最近的错误:FirebaseError:[code = unavailable]:操作无法完成 这通常表明您的设备目前没有健康的互联网连接。客户端将以离线模式运行,直到能够成功连接到后端。

我尝试的第一个解决方案是通过云外壳终端和编辑器添加 cors.json 文件:

  1. 我使用以下配置创建了 JSON 文件

[
  {
    "origin": ["*"],
    "method": ["GET", "POST", "DELETE", "PUT"],
    "maxAgeSeconds": 3600
  }
]

  1. 输入终端并输入命令,其中budget-app-react-3f8a6.appspot.com是我在firebaseConfig中的storageBucket

gsutil cors 设置 cors.json gs://budget-app-react-3f8a6.appspot.com

然后我收到一个错误:

在 gs://budget-app-react-3f8a6.appspot.com/ 上设置 CORS... NotFoundException: 404 指定的存储桶不存在。

其次,我尝试使用 gcloud CLI 解决问题。逐步按照文档进行操作后,我收到了基本上相同的错误:

gs://budget-app-react-3f8a6 未找到:404。

也许有人可以帮助我解决我遇到的 CORS 问题?

cors google-cloud-storage gsutil
1个回答
0
投票

错误消息

gs://budget-app-react-3f8a6 not found: 404
表示您要使用的存储桶不可用。要解决此问题:

  1. 转到您的 Firebase 设置。

  2. 单击您的项目。

  3. 选择左侧的

    Storage

  4. 选择

    Browser
    选项卡。

  5. Bucket.

    下找到正确的存储桶名称

如果名称正确,请使用以下终端命令检查存储桶是否存在:

gsutil ls gs://BUCKET_NAME

BUCKET\_NAME
替换为您的 Firebase 存储桶的名称。

如果存储桶不存在,请使用 gsutil 工具创建它:

  1. 打开终端。

  2. 输入以下命令安装 gsutil:

pip install gsutil
  1. 创建存储桶:
gsutil mb gs://BUCKET_NAME

将 BUCKET_NAME 替换为您的 Firebase 存储桶的名称。

桶准备好后,设置 CORS:

  1. 打开终端。

  2. 导航到包含 cors.json 的文件夹。

  3. 运行此命令:

gsutil cors set cors.json gs://BUCKET_NAME

BUCKET\_NAME
替换为您的 Firebase 存储桶的名称。

如果您仍然遇到问题,请在 IAM 和管理下的 Firebase 设置中验证您更改 CORS 的权限。

© www.soinside.com 2019 - 2024. All rights reserved.