首页 文章

Firebase存储和访问控制允许原点

提问于
浏览
42

我正在尝试通过XMLHttpRequest从Firebase存储下载文件,但资源上没有设置Access-Control-Allow-Origin,因此无法实现 . 有没有办法在存储服务器上设置此标头?

(let [xhr (js/XMLHttpRequest.)]
    (.open xhr "GET" url)
    (aset xhr "responseType" "arraybuffer")
    (aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
    (.send xhr)))

Chrome错误消息:

XMLHttpRequest无法加载https://firebasestorage.googleapis.com/[EDITED]请求的资源上没有“Access-Control-Allow-Origin”标头 . 因此不允许来源'http:// localhost:3449'访问 .

2 回答

  • 74

    从这个post on the firebase-talk group/list

    为CORS配置数据的最简单方法是使用gsutil命令行工具 . 有关gsutil的安装说明,请访问https://cloud.google.com/storage/docs/gsutil_install . 一旦安装了gsutil并通过它进行了身份验证,就可以使用它来配置CORS . 例如,如果您只想允许从自定义域下载对象,请将此数据放在名为cors.json的文件中(将“https://example.com”替换为您的域名):[
    {
    “origin”:[“https://example.com”],
    “方法”:[“GET”],
    “maxAgeSeconds”:3600
    }
    ]
    然后,运行此命令(将“exampleproject.appspot.com”替换为您的存储桶名称):gsutil cors set cors.json gs://exampleproject.appspot.com
    你应该被设定 . 如果您需要更复杂的CORS配置,请查看https://cloud.google.com/storage/docs/cross-origin#Configuring-CORS-on-a-Bucket上的文档 .

  • 0

    只想添加答案 . 只需在Google控制台(console.cloud.google.com/home)中转到您的项目,然后选择您的项目即可 . 打开终端并创建cors.json文件( touch cors.json ),然后按照@ frank-van-puffelen的建议按照答案编辑此文件( vim cors.json

    这对我有用 . 干杯!

相关问题