2011-09-10 3 views
0

도메인 B (api.domainb.com)의 다른 도메인에 api를 설정하고 도메인 A에서 호출하려고합니다. (www.domaina.com). 그러나 jquery ajax를 통해 도메인 A에서 도메인 B로 전화를 걸면 jquery는 www.domaina.com/api.domainb.com을 호출하려고하는데 이는 분명히 오류를 반환합니다. 여기에 관련 자바 스크립트 코드도메인 간 jquery 1.6.2 ajax 호출이 동일한 도메인에서 호출하려고합니다.

$.ajax(
     url: 'http://api.domainb.com', 
     type: 'GET', 
     dataType: 'jsonp', 
     data: {hello: 'world'}, 
     crossDomain: true, 
     success: function(data){ 
     alert(JSON.stringify(data)) 
     }, 
     error: function(error){ 
     alert(JSON.stringify(error)) 
     }); 

결국, 도메인 A와 도메인 B의 코드가 같은 도메인에있을 것입니다,하지만 지금, 나는 크로스 도메인 호출을 확인해야합니다. 이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까?

+0

이 질문의 원본 버전에서 url : url : 'api.domainb.com'. 'http://api.domainb.com'으로 변경해야한다고 제안되었습니다. 질문의 원래 버전에있는 코드가이를 반영하도록 업데이트되었습니다. 'http : //'를 추가하려고했지만 아무런 변화가 없었습니다. 같은 문제가 있습니다. – user938301

답변

2

도메인 간 통화를 할 수 없습니다. 브라우저는 일반적으로 그것을 허용하지 않습니다. 그러나 설명하는 동작을 보는 이유는 URL에 "http : //"접두사가 누락되어 있기 때문입니다.

fairly new HTML5 APIs을 사용하여 도메인 간 통화를 수행하기 위해 "허가 얻기"를 수행 할 수있는 몇 가지 작업이 있습니다.

편집 @Dan는 XMLHttpRequest의은 (사람들은 보통 "아약스"라고 부릅니다) 도메인 간 물건을 (CORS 제외)하지 않을 때, 그것은 <script> 태그가 다른 도메인을 참조 할 수 있다는 사실을 활용할 수 있다고 정확하게 지적 함께 봉사하기 위해. 그러나 서버 측 코드는 달라야합니다. (보통은 "JSONP"이라고 부릅니다.)

+0

저는 전문가가 아니지만 IIRC에서는 JSONP를 사용하여 서버 측이 협조 할 준비가되어있는 한 제한을 없앨 수 있습니다. 뒤에서는 XHR 대신'script' 태그를 사용합니다. – Dan

+0

네, 그렇습니다. 그렇지만 실제로 XHR이 아닙니다 :-) 그러나 나는 그 해답을 분명히 할 것입니다. 감사! – Pointy

+0

맞아요. jQuery의 'ajax' 호출의 차이점을 추상화 한 요지는 XHR과 JSONP가 실제로 같은 것을 달성한다는 것입니다. 정의를 주장하는 것은 물론 까다 롭습니다. 그러나 "AJAX"는 XHR만을 의미하는 것으로 결코 생각하지 않았습니다. – Dan

2

Ajax 호출은 상대 URL이 아니라 다른 도메인이라는 것을 알고 있으므로 프로토콜이 누락되었습니다. url: 'http://api.domainb.com'을 사용해보세요.

관련 문제