当我在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文件的错误。有关如何解决它的任何想法?
答案 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
这也应该为你解决问题。