Запросы с перекрестным происхождением в Google CDN

Я пытаюсь загрузить файл с расширением .json из Google CDN:

//ajax.googleapis.com/ajax/libs/dojo/1.8/dojox/geo/charting/resources/data/USStates.json

Стандартные запросы xhr терпят неудачу из-за политики перекрестного происхождения. Поддерживает ли Google CDN какие-либо запросы из разных источников, например JSONP или CORS? Не могли бы вы показать мне пример того, как получить вышеуказанный файл?

Вышеупомянутый файл является частью Dojo, но я могу использовать любую другую библиотеку или простой JavaScript. Единственное ограничение - получить файл из Google CDN.


person Christophe    schedule 16.10.2012    source источник


Ответы (4)


Судя по полученной (отсутствующей) информации, Google CDN не поддерживает какой-либо междоменный доступ, такой как JSONP или CORS. Это означает, что единственный способ использовать файлы CDN .json - через прокси-сервер.

Для клиентского JavaScript мне нужно будет сохранить локальную копию файла.

person Christophe    schedule 17.10.2012

Я знаю, что этот вопрос задавался давно, но теперь хранилище Google позволяет нам изменять конфигурации CORS.

У меня была такая же проблема с CORS, и я выполнил следующие действия, чтобы решить ее.

  1. Создайте файл JSON с конфигурациями CORS cors-config.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. Теперь обновите конфигурацию bucket cors.

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

Ваши конфигурации CORS обновлены. Теперь вы можете увидеть недавно обновленные конфигурации CORS в корзине, выполнив эту команду.

gsutil cors get gs://[bucket_name]/

документ Google о конфигурации CORS

person Yogesh Patil    schedule 25.10.2017

Похоже, что это уже не так:

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

// {"layerExtent": …}
person Francesc Rosas    schedule 19.08.2015

На момент написания этой статьи ответ @Yogesh Patil действительно решил проблему.

Хочу отметить, что я использую Windows Google Cloud SDK.

Вам не нужно загружать файл json в корзину. Но вам нужно скопировать файл json в локальный каталог Google Cloud SDK. Затем вы можете запустить команду:

gsutil cors set cors-config.json gs://[bucket_name]
person Alan328    schedule 15.12.2019