Google CDN上的跨源请求

时间:2012-10-16 20:48:28

标签: javascript dojo jsonp cors google-cdn

我正在尝试从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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我知道自问这个问题已经很久了,但现在谷歌存储让我们改变了CORS配置。

我遇到了与CORS相同的问题,并按照这些步骤解决了这个问题。

  1. 使用CORS配置cors-config.json
  2. 创建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配置

答案 2 :(得分:0)

似乎不再是这种情况了:

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

// {"layerExtent": …}

答案 3 :(得分:0)

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

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

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

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