gs://<your-cloud-storage-bucket>没有CORS配置

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

我试图在按钮单击事件上从我的 Firebase 存储中下载文件,但它给了我“Access-Control-Allow-Origin”错误。

https://firebase.google.com/docs/storage/web/download-files

根据上面的链接,我正在尝试配置 CORS。我安装了 gsutil 命令行工具。但我无法找到需要复制此代码的 cors.json 文件

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

然后我使用命令

gsutil cors get gs://<your-cloud-storage-bucket>
返回
gsutil cors get gs://<your-cloud-storage-bucket>/ has no CORS configuration

我需要先为我的存储桶创建 CORS 配置文件吗?

下面是我的按钮点击方法,以防错误在代码中。

downloadAttachment(fileName) {
var uid = AuthService.uid;
let storageRef = firebase.storage().ref().child('assignments/' + uid + '/' + fileName);
storageRef.getDownloadURL().then(url => {
  console.log(url);
  var xhr = new XMLHttpRequest();
  xhr.responseType = 'blob';
  xhr.onload = function (event) {
    var blob = xhr.response;
  };
  xhr.open('GET', url);
  xhr.send();
});
}

错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“http://localhost:4200”。

谢谢。

firebase cors firebase-storage
3个回答
6
投票

是的,创建一个任意名称的文件(如果需要,可以将其命名为

cors.json
)并将您首选的 CORS 配置设置放入其中,然后像这样运行
gsutil

gsutil cors set cors.json gs://<your-cloud-storage-bucket>/

这会将这些 CORS 配置设置上传到您的存储桶。之后,您可以随时使用

gsutil cors get gs://<your-cloud-storage-bucket>
检索当前设置。


0
投票

对于那些尝试过this答案并收到此错误的人:

命令不支持“file://”URL

您需要做的就是复制 cors.json 文件,转到 PC 上“Cloud sdk”工具所在的位置(在我的例子中是 C:\Users\Mothers Child\AppData\Local\Google\Cloud SDK)并将文件直接粘贴到该文件夹中,然后运行“gsutil cors set cors.json gs://your-bucket-name”。这次应该可以了。


-1
投票

只需运行命令

gsutil cors set cors.json gs://<your-cloud-storage-bucket>

来自包含 cors.json 文件的目录。

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