2012-05-28 3 views
0

데이터를 외부 API로 보내고 응답을 기다리고 결과를 해석하는 .js 파일을 작성하려고합니다. 외부 API는 XML 기반이며 XML을 본문으로 사용하는 HTTPS Post (content-type; text/xml)를 허용합니다. 나는 cURL을 통해 API를 올바르게 호출 할 수 있습니다. 나는 HTML을 열 때API 호출 jQuery

<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body onload="CallService()"> 

<script type="text/javascript"> 
var webServiceURL = 'https://www.url.com'; 
var xmlString = '<xml><parameter1>value1</parameter1> 
<parameter2>value2</parameter2></xml>'; 

function CallService() { 
    $.ajax({ 
     url: webServiceURL, 
     type: "POST", 
     dataType: "xml", 
     data: xmlString, 
     processData: false, 
     contentType: "text/xml; charset=\"utf-8\"", 
     success: OnSuccess, 
     error: OnError 
}); 
    return false; 
} 

function OnSuccess(data, status) { 
    alert(data.d); 
} 

function OnError(request, status, error) { 
    alert('error'); 
} 

$(document).ready(function() { 
    jQuery.support.cors = true; 
}); 
</script> 
</body> 
</html> 

나는 다른 쪽 끝납니다 경고 말하고 "오류"아무것도 얻을 (외부 API의) :

이것은 내가 지금까지있는 것입니다. JavaScript/Ajax/jQuery를 사용하여이를 수행하는 방법이 있습니까? 아니면 JS 호출을받는 "지원"코드가 필요합니까?

1) XML이 아닌 JSON

2를 사용하는 경우 당신을 관심을 끌지 것이다, JSONP 사용하면 도메인 간 쿼리를 만들고 싶어 할 때

+2

브라우저에서 다른 도메인의 URL로 전화를 거는 데는 여러 가지 문제가 있습니다. 기본적인 대답은 가능하지 않다는 것입니다. 그러나 최근의 몇몇 개발로 인해 서버가 이러한 요청을 허용 할 수있게되었습니다. 이를 수행하려면 서버 소프트웨어를 제어해야합니다. – Pointy

+0

서버를 제어 할 수 있다면 어떻게해야합니까? 이것을 허용하기 위해 어떤 설정을 변경해야합니까? – user1375193

+0

"CORS"에 대한 자습서 (Cross-Origin Resource Sharing)를 찾으십시오. 그것은 HTML5의 것입니다, 그리고 그것은 특별한 헤더와 그런 것들을 필요로합니다. 이전 버전의 브라우저는 지원하지 않지만 결국 2012입니다 .-) – Pointy

답변

0

, 당신은 솔루션의 기본적으로 3 가지 유형이) 기본 HTML 페이지를 제공하는 서버에서 프록시 (또는 모든 유형의 get)를 설정하여 크로스 도메인을 실제로 수행하지 않습니다.

3) 서버의 헤더를 변경하여 교차 HTML을 허용하는 브라우저를 지정합니다. 도메인 검색어 이것은 새로운 기능이지만 모든 주요 브라우저에서 허용됩니다. 그건 CORS입니다. 모든 서버 측 언어에서 헤더 ("Access-control -...")를 변경하는 것이 쉽기 때문에 (보안, 권한, 대역폭, 광고 등) 문제가있는 경우 당신이 봉사하는 데이터에 대한 도메인 접근, 당신은 허용 된 기원을 제지 할 수 있습니다).