我试图通过xmlhttprequest从firebase存储下载文件,但资源上未设置访问控制允许源,因此不可能。有没有办法在存储服务器上设置此标头?
(let [xhr (js/XMLHttpRequest.)]
(.open xhr "GET" url)
(aset xhr "responseType" "arraybuffer")
(aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
(.send xhr)))
chrome错误消息:
无法加载xmlhttprequesthttps://firebasestorage.googleapis.com/[已编辑]请求的资源上不存在“访问控制允许来源”标题。起源'http://localhost:3449因此,不允许访问。
5条答案
按热度按时间fhg3lkii1#
从firebase谈话组/列表上的这篇文章:
为cors配置数据的最简单方法是使用
gsutil
命令行工具。的安装说明gsutil
可在https://cloud.google.com/storage/docs/gsutil_install. 一旦你安装了gsutil
通过它进行身份验证,您可以使用它来配置cors。例如,如果您只想允许从自定义域下载对象,请将此数据放在名为cors.json的文件中(替换
"https://example.com"
使用您的域):然后,运行此命令(替换
"exampleproject.appspot.com"
使用您的存储桶名称):你应该被安排好。
如果您需要更复杂的cors配置,请查看以下文档:https://cloud.google.com/storage/docs/cross-origin#configuring-桶上的cors。
brvekthn2#
谷歌云现在有一个内联编辑器,使这一过程更加容易。无需在本地系统上安装任何东西。
打开gcp控制台并通过单击
>_
顶部导航栏中的图标按钮。单击铅笔图标打开编辑器,然后创建
cors.json
文件跑
gsutil cors set cors.json gs://your-bucket
rqenqsqc3#
我只是想补充一下答案。只需在谷歌控制台(console.cloud.google.com/home)中转到您的项目并选择您的项目。打开终端,只需创建cors.json文件(
touch cors.json
)然后按照答案编辑此文件(vim cors.json
)正如@frank van puffelen所建议的这对我有用。干杯
xyhw6mcr4#
另一种方法是使用googlejsonapi。步骤1:获取要与json api一起使用的访问令牌以获取令牌使用转到:https://developers.google.com/oauthplayground/ 然后搜索json api或存储选择所需选项,即读、写、完全访问(勾选所需选项),然后按照流程获取访问令牌,该令牌将在一小时内有效。步骤2:使用令牌点击google json api更新cors
样本 curl 度:
pgvzfuti5#
要访问应用cors头的任何资源,您可以使用我在golang为自己制作的一个小项目-https://proxify-cors.herokuapp.com/