关于firebase存储的CORS

Ada*_*ani 2 cors firebase firebase-storage

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

Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.
Run Code Online (Sandbox Code Playgroud)

我正在使用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': '*',}
)
Run Code Online (Sandbox Code Playgroud)

我将访问权限设置为public:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*ani 11

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

curl https://sdk.cloud.google.com | bash
Run Code Online (Sandbox Code Playgroud)

重启你的shell:

exec -l $SHELL
Run Code Online (Sandbox Code Playgroud)

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

gcloud init
Run Code Online (Sandbox Code Playgroud)

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

[
    {
      "origin": ["http://example.appspot.com"],
      "responseHeader": ["Content-Type"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]
Run Code Online (Sandbox Code Playgroud)

并使用您的firebase存储gc:端点运行此命令

gsutil cors set yourFile.json gs://yourProject
Run Code Online (Sandbox Code Playgroud)

这也应该为你解决问题.