Ошибка междоменного XMLHTTPRequest - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь загрузить данные XML с помощью метода get jQuery. Фид XML расположен по следующему URL: http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta

Когда я запускаю следующий код в браузере, я получаю сообщение об ошибке:

XMLHttpRequest не может загрузить http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta. Происхождение http://173.203.89.156 не разрешено Access-Control-Allow-Origin.

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>Bus Map</title>
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0px; padding: 0px }
  #map_canvas { height: 100% }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js">
</script>
<script type="text/javascript">

    $(document).ready(function() {
        var myLatlng = new google.maps.LatLng(42.3966499, -71.12188);
        var myOptions = {
            zoom: 14,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        $.get('http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta', function(stops) {
            alert(stops[0]);                                                                                                    
        })
    });

</script>
</head>

<body>
<div id="map_canvas" style="width: 100%; height: 100%"></div>
</body>
</html>

Этот домен категорически блокирует все междоменные запросы XMLHTTP или существует возможность обойти эту ошибку?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

браузер блокирует кросс-доменные xhrs.Существует нечто, называемое Same-Origin-Policy , которому вы должны следовать для xhrs, или вам нужно использовать альтернативу, такую ​​как прокси на стороне сервера или jsonp, если это предусмотрено приложением.

1 голос
/ 08 февраля 2011

Если вам нужно обойти проблему с одним доменом (как это делают многие API), изучите JSONP.Я не очень знаком с jQuery, но, похоже, он делает вызовы JSONP с getJSON , если в URL есть параметр обратного вызова.

...