关于firebase存储的CORS

时间:2017-12-12 08:26:25

标签: firebase cors firebase-storage

当我在html文件上进行get调用时,我在firebase存储上遇到了正常的cors错误:

Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.

我正在使用axios进行通话:

axios.get('https://firebasestorage.googleapis.com/v0/b/xxxxx-xxxxx.appspot.com/o/files%2Fsigning%2F148%2F459.html?alt=media&token=f3be2ef2-a598-4c30-a77b-8077e8b1f7bc',
{
   headers: {'Access-Control-Allow-Origin': '*',}
)

我将访问权限设置为public:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

当我加载图片时,同样的设置工作正常,但它给了我存储的html文件的错误。有关如何解决它的任何想法?

1 个答案:

答案 0 :(得分:6)

Firebase使用与Google云相同的存储基础架构,即使没有用于设置cors规则的firebase方法,也可以使用gc设置。 首先,您需要安装google cloud sdk:

curl https://sdk.cloud.google.com | bash

重新启动你的shell:

exec -l $SHELL

初始化gcloud。这将要求您选择您的帐户并进行身份验证。

gcloud init

然后使用以下内容创建一个json文件

[
    {
      "origin": ["http://example.appspot.com"],
      "responseHeader": ["Content-Type"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]

使用你的firebase存储gc:endpoint

运行它
gsutil cors set yourFile.json gs://yourProject

这也应该为你解决问题。