在Firebase Google Cloud Storage Bucket上配置CORS

Dav*_* J. 4 google-cloud-storage firebase firebase-storage

我正在尝试将文件上传到Firebase存储桶.

由于跨源请求错误,我无法这样做.

XMLHttpRequest cannot load gs://myappkhh.appspot.com. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Run Code Online (Sandbox Code Playgroud)

我被告知,处理此问题的方法是命令行工具gsutil (根据https://cloud.google.com/storage/docs/cross-origin)

我如何在现有的firebase项目中使用它?我在哪里需要运行此命令?

Dis*_*ake 11

登录您的google云端控制台:https://console.cloud.google.com/home并点击右上角的"激活Google Cloud Shell".

在窗口的底部,将显示一个shell终端,其中gcloud和gsutil已经可用.执行以下命令.它会创建一个json文件,用于为您的存储桶设置cors-configuration.此配置将允许每个域使用浏览器中的XHR-Requests访问您的存储桶:

echo '[{"origin": ["*"],"responseHeader": ["Content-Type"],"method": ["GET", "HEAD"],"maxAgeSeconds": 3600}]' > cors-config.json
Run Code Online (Sandbox Code Playgroud)

如果要限制访问一个或多个特定域,请将其URL添加到阵列,例如:

echo '[{"origin": ["https://yourdomain.com"],"responseHeader": ["Content-Type"],"method": ["GET", "HEAD"],"maxAgeSeconds": 3600}]' > cors-config.json
Run Code Online (Sandbox Code Playgroud)

在以下命令中将YOUR_BUCKET_NAM E 替换为您的实际存储桶名称,以更新存储桶中的cors-settings

gsutil cors set cors-config.json gs://YOUR_BUCKET_NAME
Run Code Online (Sandbox Code Playgroud)

要检查一切是否按预期工作,您可以使用以下命令获取存储桶的cors-settings:

gsutil cors get gs://YOUR_BUCKET_NAME
Run Code Online (Sandbox Code Playgroud)

参考:https://developer.bitmovin.com/hc/en-us/articles/360000059353-How-do-I-set-up-CORS-for-my-Google-Cloud-Storage-Bucket-