dojo Google CDN上的跨源请求

o75abkj4  于 2022-12-16  发布在  Dojo
关注(0)|答案(4)|浏览(178)

我正在尝试从Google CDN加载扩展名为.json的文件:
//ajax.googleapis.com/ajax/libs/dojo/1.8/dojox/geo/charting/resources/data/USStates.json
标准的xhr请求会因为跨源策略而失败。Google CDN是否支持任何类型的跨源请求,比如JSONP或CORS?你能给我一个如何获取上述文件的例子吗?
上面的文件是Dojo的一部分,但我可以使用任何其他库或纯JavaScript,唯一的限制是从Google CDN获取文件。

vm0i2vca

vm0i2vca1#

根据我得到的信息(缺乏),Google CDN不支持任何类型的跨域访问,如JSONP或CORS,这意味着消费CDN.json文件的唯一方式是通过服务器代理。
对于客户端JavaScript,我必须存储文件的本地副本。

t9aqgxwy

t9aqgxwy2#

我知道这个问题已经问了很长时间,但现在谷歌存储让我们改变CORS配置。
我在CORS方面遇到了同样的问题,并按照以下步骤解决了这个问题。
1.使用CORS配置cors-config.json创建JSON文件

[
    {
        "origin": ["*"],
        "method": ["GET"],
        "maxAgeSeconds": 3000,
        "responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", "Origin", "Range"]
    }
]

2.将此文件上载到存储桶中

gsutil cp cors-config.json gs://[bucket_name]

3.现在更新存储桶关联配置

gsutil cors set cors-config.json gs://[bucket_name]

您的CORS配置已更新。现在,您可以通过运行此命令查看桶上最新更新的CORS配置。

gsutil cors get gs://[bucket_name]/

Google document关于CORS配置

a2mppw5e

a2mppw5e3#

在写这篇文章的时候,@Yogesh Patil的回答确实解决了这个问题。
我想指出的是,我使用的是Windows谷歌云SDK.
你不需要把json文件上传到你的bucket,但是你需要把json文件复制到你本地的Google Cloud SDK目录,然后你可以运行命令:

gsutil cors set cors-config.json gs://[bucket_name]
sulc1iza

sulc1iza4#

但现在似乎不再是这样了:

$.ajax('//ajax.googleapis.com/ajax/libs/dojo/1.8/dojox/geo/charting/resources/data/USStates.json').
  then(function(data) { console.log(data) })

// {"layerExtent": …}

相关问题