【发布时间】:2019-02-15 06:45:33
【问题描述】:
我已将 Google 地球引擎中的地图导出到可公开访问的云存储桶(所有用户)。存储桶中的格式是带有 .png 扩展名的地图图块。
我还使用 gsutil 设置了我的 CORS 设置,如下所示:
[
{
"origin": ["*"],
"responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", "Origin", "Range"],
"method": ["GET"],
"maxAgeSeconds": 300
}
]
但尝试访问这些地图图块(使用 Leaflet tileLayer)时,我在 Chrome 开发人员工具中遇到了 CORB(跨源读取阻止)错误,但没有显示任何内容。
我在 Chrome DT 中的响应标头显示如下:
cache-control: no-cache, no-store, max-age=0, must-revalidate
content-type: text/html; charset=utf-8
expires: Mon, 01 Jan 1990 00:00:00 GMT
我该如何解决这个问题?
【问题讨论】:
-
在你的命令行运行:gsutil cors get gs://yourBucketName,然后告诉我打印了什么
-
这可能是因为 OPTIONS 不在您的允许方法列表中。如果您正在传递 cookie(例如,如果您的 JavaScript 使用
withCredentials = True),则 GET 调用可能会触发预检请求。检查是否有一个 OPTIONS 预检调用,看看结果是什么。 -
cors get 显示:[ { "origin": ["*"], "responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", " Origin", "Range"], "method": ["GET","OPTIONS"], "maxAgeSeconds": 300 } ] 我尝试运行 gsutil iam ch allUsers:objectViewer gs://youBucketName 并且没有记录任何更改。我之前已经设置了该选项。