firebase存储和访问控制允许来源

3zwjbxry  于 2021-09-13  发布在  Java
关注(0)|答案(5)|浏览(269)

我试图通过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因此,不允许访问。

fhg3lkii

fhg3lkii1#

从firebase谈话组/列表上的这篇文章:
为cors配置数据的最简单方法是使用 gsutil 命令行工具。的安装说明 gsutil 可在https://cloud.google.com/storage/docs/gsutil_install. 一旦你安装了 gsutil 通过它进行身份验证,您可以使用它来配置cors。
例如,如果您只想允许从自定义域下载对象,请将此数据放在名为cors.json的文件中(替换 "https://example.com" 使用您的域):

[
  {
    "origin": ["https://example.com"],
    "method": ["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。

brvekthn

brvekthn2#

谷歌云现在有一个内联编辑器,使这一过程更加容易。无需在本地系统上安装任何东西。
打开gcp控制台并通过单击 >_ 顶部导航栏中的图标按钮。
单击铅笔图标打开编辑器,然后创建 cors.json 文件
gsutil cors set cors.json gs://your-bucket

rqenqsqc

rqenqsqc3#

我只是想补充一下答案。只需在谷歌控制台(console.cloud.google.com/home)中转到您的项目并选择您的项目。打开终端,只需创建cors.json文件( touch cors.json )然后按照答案编辑此文件( vim cors.json )正如@frank van puffelen所建议的
这对我有用。干杯

xyhw6mcr

xyhw6mcr4#

另一种方法是使用googlejsonapi。步骤1:获取要与json api一起使用的访问令牌以获取令牌使用转到:https://developers.google.com/oauthplayground/ 然后搜索json api或存储选择所需选项,即读、写、完全访问(勾选所需选项),然后按照流程获取访问令牌,该令牌将在一小时内有效。步骤2:使用令牌点击google json api更新cors
样本 curl 度:

curl -X PATCH \
  'https://www.googleapis.com/storage/v1/b/your_bucket_id?fields=cors' \
  -H 'Accept: application/json' \
  -H 'Accept-Encoding: gzip, deflate' \
  -H 'Authorization: Bearer ya29.GltIB3rTqQ2tJgh0cMj1SEa1UgQNJnTMXUjMlMIRGG-mBCbiUO0wqdDuEpnPD6cbkcr1CuLItuhaNCTJYhv2ZKjK7yqyIHNgkCBup-T8Z1B1RiBrCgcgliHOGFDz' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: d19f29ed-2e80-4c34-85ee-c46c9058fac0' \
  -H 'cache-control: no-cache' \
  -d '{
  "location": "us",
  "storageClass": "Standard",
  "cors": [
      {
          "maxAgeSeconds": "360000000",
          "method": [
             "GET",
             "HEAD",
             "DELETE"
          ],
          "origin": [
             "*"
          ],
          "responseHeader":[
            "Content-Type"
         ]
      }
  ]
}'
pgvzfuti

pgvzfuti5#

要访问应用cors头的任何资源,您可以使用我在golang为自己制作的一个小项目-https://proxify-cors.herokuapp.com/

相关问题