4

我正在尝试从 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 获取文件。

4

4 回答 4

3

根据我获得的(缺乏)信息,Google CDN 不支持任何类型的跨域访问,例如 JSONP 或 CORS。这意味着使用 CDN .json 文件的唯一方法是通过服务器代理。

对于客户端 JavaScript,我必须存储文件的本地副本。

于 2012-10-17T18:08:51.550 回答
3

我知道这个问题被问到已经很久了,但现在谷歌存储允许我们更改 CORS 配置。

我在 CORS 方面遇到了同样的问题,并按照这些步骤来解决它。

  1. 使用 CORS 配置创建 JSON 文件 cors-config.json
[
    {
        "origin": ["*"],
        "method": ["GET"],
        "maxAgeSeconds": 3000,
        "responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", "Origin", "Range"]
    }
]

2.将此文件上传到bucket

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

3.现在更新bucket cors配置

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

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

gsutil cors get gs://[bucket_name]/

关于 CORS 配置的Google 文档

于 2017-10-25T06:31:31.053 回答
0

在撰写本文时,@Yogesh Patil 的回答确实解决了这个问题。

我想指出,我使用的是 Windows Google Cloud SDK。

您无需将 json 文件上传到您的存储桶。但是您需要将 json 文件复制到本地 Google Cloud SDK 目录中。然后你可以运行命令:

gsutil cors set cors-config.json gs://[bucket_name]
于 2019-12-15T07:50:22.223 回答
-1

它似乎不再是这种情况了:

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

// {"layerExtent": …}
于 2015-08-19T13:06:44.500 回答