Javascript: проблема XMLHttpRequest с распределением ресурсов между источниками - PullRequest
1 голос
/ 27 июля 2011

Я отправляю запрос JSON в API Google Адресов с:

    function load(){

    var req = new XMLHttpRequest();

    req.open('GET', 'https://maps.googleapis.com/maps/api/place/details/json?reference=CnRhAAAARMUGgu2CeASdhvnbS40Y5y5wwMIqXKfL-n90TSsPvtkdYinuMQfA2gZTjFGuQ85AMx8HTV7axABS7XQgFKyzudGd7JgAeY0iFAUsG5Up64R5LviFkKMMAc2yhrZ1lTh9GqcYCOhfk2b7k8RPGAaPxBIQDRhqoKjsWjPJhSb_6u2tIxoUsGJsEjYhdRiKIo6eow2CQFw5W58&sensor=true&key=xxxxxxxxxxxxx', false);

    req.send(null);

    if(req.status == 200){  

      dump(req.responseText);

        }
}

Но Chrome возвращает ошибку:

XMLHttpRequest cannot load https://maps.googleapis.com/maps/api/place/details/json?reference=CnRhAAAARMUGgu2CeASdhvnbS40Y5y5wwMIqXKfL-n90TSsPvtkdYinuMQfA2gZTjFGuQ85AMx8HTV7axABS7XQgFKyzudGd7JgAeY0iFAUsG5Up64R5LviFkKMMAc2yhrZ1lTh9GqcYCOhfk2b7k8RPGAaPxBIQDRhqoKjsWjPJhSb_6u2tIxoUsGJsEjYhdRiKIo6eow2CQFw5W58&sensor=true&key=xxxxxxxxxxxxxx. 
Origin http://sandrayoon.com is not allowed by Access-Control-Allow-Origin.

Есть ли способ предотвратить или обойти обмен ресурсами между источниками? Я не очень знаком с этой проблемой безопасности.

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

Единственный способ предотвратить это - отправить правильный заголовок Access-Control-Allow-Origin с сервера, который не находится под вашим контролем. Так что основной ответ - нет. Однако вы можете рассмотреть возможность использования прокси-сервера, который будет получать данные с сервера и отправлять их вам с того же хоста, на котором был обработан ваш клиентский скрипт.

3 голосов
/ 27 июля 2011

Сервер должен ответить заголовком «Access-Control-Allow-Origin», чтобы браузер мог передать этот ответ в javascript.Вы также можете установить «*», чтобы разрешить любые междоменные запросы.

Вот хорошее вступление к теме.

...