首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云存储核心

云存储核心
EN

Stack Overflow用户
提问于 2018-09-11 03:42:37
回答 2查看 318关注 0票数 1

我已经将地图从Google Earth引擎导出到具有公共访问权限的云存储桶(allUsers)中。存储桶中的格式是带有.png扩展名的地图瓦片。

我还使用gsutil设置了CORS设置,如下所示:

代码语言:javascript
复制
[
    {
      "origin": ["*"],
      "responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", "Origin", "Range"],
      "method": ["GET"],
      "maxAgeSeconds": 300
    }
]

但是尝试访问这些地图瓦片(使用一个单张tileLayer)时,我在Chrome开发工具中遇到了CORB (跨源读取阻塞)错误,并且什么都没有显示。

我在Chrome DT中的响应标头显示了以下内容:

代码语言:javascript
复制
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

如何解决此问题?

EN

回答 2

Stack Overflow用户

发布于 2018-09-11 04:18:07

如果你想让你所有的存储桶都是可读的,你需要提供IAM policies

代码语言:javascript
复制
gsutil iam ch allUsers:objectViewer gs://youBucketName

更新:您必须使用的enpoint是:

代码语言:javascript
复制
"https://storage.googleapis.com/bucketName/ObjectName"

来自documentation

对storage.cloud.google.com URI的所有请求都需要身份验证。即使当allUsers拥有访问对象的权限时,这一点也适用。如果您希望用户在不经过身份验证的情况下下载匿名可访问的对象,请使用直接storage.googleapis.com请求中记录的API URI。有关详细信息和示例,请参见访问公共数据。

您正在直接使用https://console.cloud.google.com/storage,这就是您将遇到此错误的原因

示例:

你有:https://console.cloud.google.com/storage/browser/logs1tiles/centralKansas/8/58/99

应该是:https://storage.googleapis.com/logs1tiles/centralKansas/8/58/99

票数 2
EN

Stack Overflow用户

发布于 2018-09-18 01:19:07

终于把这事搞清楚了。在Leaflet中,tileLayer应采用以下形式,带有tms=false且不带.png扩展名:

代码语言:javascript
复制
var yourTileLayer = L.tileLayer('https://storage.googleapis.com/yourbucket/yourobject/{z}/{x}/{y}',{tms=false}).addToMap();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52264456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档