我在尝试将 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 文件:
[
{
"origin": ["*"],
"method": ["GET", "POST", "DELETE", "PUT"],
"maxAgeSeconds": 3600
}
]
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 问题?
错误消息
gs://budget-app-react-3f8a6 not found: 404
表示您要使用的存储桶不可用。要解决此问题:
转到您的 Firebase 设置。
单击您的项目。
选择左侧的
Storage
。
选择
Browser
选项卡。
在
Bucket.
下找到正确的存储桶名称
如果名称正确,请使用以下终端命令检查存储桶是否存在:
gsutil ls gs://BUCKET_NAME
将
BUCKET\_NAME
替换为您的 Firebase 存储桶的名称。
如果存储桶不存在,请使用 gsutil 工具创建它:
打开终端。
输入以下命令安装 gsutil:
pip install gsutil
gsutil mb gs://BUCKET_NAME
将 BUCKET_NAME 替换为您的 Firebase 存储桶的名称。
桶准备好后,设置 CORS:
打开终端。
导航到包含 cors.json 的文件夹。
运行此命令:
gsutil cors set cors.json gs://BUCKET_NAME
将
BUCKET\_NAME
替换为您的 Firebase 存储桶的名称。
如果您仍然遇到问题,请在 IAM 和管理下的 Firebase 设置中验证您更改 CORS 的权限。