2013-03-30 1 views
0

(매우 무지한 질문, 자유롭게 인정함)JSON을 사용하지 않고 자바 스크립트로 REST 호출 하시겠습니까?

버튼과 라벨이있는 간단한 웹 페이지가 있습니다. 버튼을 클릭하면 완전히 다른 도메인 (크로스 도메인, 그만큼)에 대한 REST 호출을 만들고 레이블에 결과 (HTML)를 표시하려고합니다.

다른 API를 사용하여 JSON/P를 사용하고 요소를 추가 한 적이 있지만이 특정 API는 JSON을 지원하지 않으므로 성공적으로 통과하는 방법을 알 수 없습니다.

내가 가진 코드는 다음과 같습니다

function getESVData() { 
    $.get('http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=John+1', function (data) { 
     $('#bibleText').html(data); 
     app.showNotification("Note:", "Load performed."); 
    }); 
} 

은 내가 얻을 "액세스가 거부되었습니다." JSON없이이 호출을 성공적으로 수행 할 수 있습니까?

+0

당신이 (AJAX와 함께 할 수없는 것 직접적으로) CORS를 구현하지 않기 때문입니다. 따라서 프록시 스크립트를 작성하여 서버에 호스트하고 AJAX 요청을해야합니다. – dfsq

답변

6

먼저 JSON과 JSONP가 동일하지 않습니다. JSON은 정보를 표현하는 방식이며 JSONP는 동일한 출처 정책을 둘러싼 해킹입니다. JSONP는 다른 도메인의 정보를 요청하여 작동하며 해당 도메인은 함수 이름 (제공 한 이름)을 정보와 함께 호출하는 스크립트를 반환합니다. 실제로 다른 도메인에서 제공 한 스크립트를 사이트에서 실행하고 있으므로 다른 도메인을 신뢰해야합니다.

  1. 사용 JSONP : 크로스 도메인을 만들려고 노력하는 요청할 때

    지금 당신은 기본적으로 3 가지 옵션이 있습니다. 여기에는 GET 요청에 대해서만 작동한다는 사실과 요청을 보내는 서버가이를 지원해야한다는 등의 제한이 있습니다.

  2. CORS (Cross Origin Resource Sharing) 요청을 만듭니다. 또한 요청을 보내는 서버가 지원해야합니다.
  3. 자신의 서버에 프록시를 설정하십시오. 이 경우 간단히 요청을 릴레이하는 엔드 포인트를 사이트에 설정합니다. 즉 서버에서 정보를 요청하면 서버가 다른 서버에서 정보를 가져 와서 사용자에게 반환합니다. 당신이 옵션을 가야 할 것 같은 상황에

, 다른 옵션에 대한 지원이없는 다른 서버, 그것은 3.이 경우

+1

# 3과 관련하여 이미 기성품 해결책이 있다고 생각합니다. SimplePHPProxy를 검색해보십시오. –