2011-02-08 6 views
0

jQuery get 메서드를 통해 XML 데이터를로드하려고합니다. 내가 브라우저에서 다음 코드를 실행하면 http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta크로스 도메인 XMLHTTPRequest 오류

, 나는 오류가 발생 : XML 피드는 다음 URL에 있습니다

XMLHttpRequest cannot load http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta . Origin http://173.203.89.156 is not allowed by 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> 

은 절대적으로 모든 도메인 간 차단이 도메인인가 XMLHTTPRequests 또는이 오류를 무시할 거리가 있습니까?

답변

2

브라우저가 교차 도메인 xhrs을 차단합니다. xhrs를 위해 따라야 할 Same-Origin-Policy이 있거나 응용 프로그램에서 제공하는 경우 서버 측 프록 싱 또는 jsonp와 같은 다른 방법을 사용해야합니다.

+0

그래서 XHR을 만들 때마다 리퍼러 도메인과 포트가 동일해야합니까? 그게 보안 기능인가요? – Adam

+0

@adam, 예, 프로토콜 – hvgotcodes

+0

과 같은 것들 중에서 나는 전에 많은 웹 서비스를 사용했습니다. 이 점이 다른 점은 무엇입니까? – Adam

1

같은 도메인 문제를 해결해야하는 경우 (많은 API와 마찬가지로) JSONP를 살펴보십시오. jQuery에 익숙하지 않지만 URL에 콜백 매개 변수가있는 경우 getJSON으로 JSONP를 호출하는 것으로 보입니다.

+0

콜백을 추가하는 한이 작동합니다. =? 매개 변수를 쿼리 문자열에 추가하십시오. 그러나 응용 프로그램에서 'Uncaught SyntaxError : 예기치 않은 토큰 <'이라는 오류가 발생합니다. 이것은 응용 프로그램이 json을 기대하고 대신 XML을 얻고 있기 때문입니까? – Adam

+0

아, 네. 이 기능은 XML이 아닌 JSON에서 작동합니다. –

+0

감사합니다. 이것은 유용한 정보입니다. +1 – Adam