设置Google云端存储access-control-allow-origin标头

时间:2018-06-14 15:47:47

标签: cors google-cloud-storage

根据Google的说明,我创建了一个cors-json-file.json

[
    {
      "origin": ["*"],
      "responseHeader": ["Content-Type"],
      "method": ["GET"],
      "maxAgeSeconds": 10
    }
]

然后将它应用到我的水桶

gsutil cors set cors-json-file.json gs://mybucket  

然后是一个cURL请求获取标题

curl -H "Origin: https://example.com" -I https://mybucket.storage.googleapis.com/myfile.pdf

在回复中,我看到我的标题已设置

access-control-allow-origin: *

但如果相反我将原点设置为特定的

[
    {
      "origin": ["https://example.com"],
      "responseHeader": ["Content-Type"],
      "method": ["GET"],
      "maxAgeSeconds": 10
    }
]

cURL响应中没有 access-control-allow-origin 标头!

(我的跨文本尝试读取文件失败)

我做错了什么?

2 个答案:

答案 0 :(得分:2)

这似乎是一个缓存问题 - 几天后,这一切都按预期工作。

来自@sideshowbarker的有用建议是检查您是否使用了完整的URL(包括http://),并且还需要在请求标头中发送以查看响应标头。

curl -H "Origin: https://example.com" -I https://mybucket.storage.googleapis.com/myfile.pdf

在回复中,我现在看到我的标题已设置:

access-control-allow-origin: http://example.com

答案 1 :(得分:0)

将其放入json文件中

[
  {
    "origin": ["<THE URL FROM WHICH YOU ARE REQUESTING THE ASSET>"],
    "responseHeader": ["Access-Control-Allow-Origin"],
    "method": ["GET", "HEAD", "DELETE", "OPTIONS"],
    "maxAgeSeconds": 3600
  }
]

然后运行gsutil cors set ./path/to/the/above/json gs://your_bucket_name.appspot.com