2011-09-22 1 views
1

mootools를 사용하여 웹 처리기에서 json을 요청하고 있는데이 시스템은 동일한 컴퓨터에서 올바르게 작동합니다. 크로스 도메인 문제를 해결하기 위해 콜백이 필요한 곳을 읽었지만이를 적용하는 방법은 확실하지 않습니다. 다른 도메인에서이 코드를 실행하고 싶습니다.Request.JSON을 수정하여 도메인 간 보안을 만족시키는 방법

var input = [];

var jsonRequest = new Request.JSON({ 
    url: "http://www.mysite.com.au/GetImages.ashx?p=2", 
    onSuccess: function (result) { 

     for (var i = 0; i < result.length; i++) { 
      // alert(result[i].MediaPath); 
      var s = result[i].MediaPath.split('|'); 
      for (var j = 0; j < s.length; j++) { 
       //  alert(s[j]); 
       input.push(s[j]); 
      } 
     } 


    } 
}).get(); 

건배!

답변

1

하나의 해결책은 JSONP을 사용하는 것입니다.

onSuccess(
    { 
     'your':'json', 
     'data':'here' 
    } 
) 

이 작품은 그 서버 더 이상 없습니다 만드는 트릭 :

여기
<script> 
    function onSuccess(result) { 

     for (var i = 0; i < result.length; i++) { 
      // alert(result[i].MediaPath); 
      var s = result[i].MediaPath.split('|'); 
      for (var j = 0; j < s.length; j++) { 
       //  alert(s[j]); 
       input.push(s[j]); 
      } 
     } 
    } 
</script> 
<script src="http://www.mysite.com.au/GetImages.ashx?p=2&callback=onSuccess" ></script> 
<!-- !!! Notice that the src now has a "callback" paramater which the client is passing to the server. --> 

서버가 응답 할 것입니다 : 여기

당신이 사용하는 것과 클라이언트 측 코드 기술적으로 json 데이터를 반환합니다. 대신 json 데이터를 브라우저에서 자동으로 실행하는 javascript 함수 (클라이언트 측 코드가 정의 함)로 래핑합니다. 브라우저에서 태그를 사용하여 수행하는 작업이기 때문입니다.

동적으로 수집해야하는 경우 javascript 코드에서 스크립트 요소를 만들고 url을 'src'속성으로 추가 한 다음 본문에 스크립트 태그를 추가하여 브라우저에서 실행되도록 할 수 있습니다. 이 해킹은 스크립트를 동적으로 다운로드하는 매우 표준적인 방법입니다. MooTools 에 이미이 작업을 수행 할 수 있습니다.

내 제안에 단점 : 더 이상 비동기가 아닙니다.

+0

감사합니다. – MikeW

0

또 다른 잠재적 인 솔루션은 서버 프록시에 다른 사이트의 json 요청을 보내는 것입니다. 나는 이것이 어떻게 행해지는지 익숙하지 않지만, 은 프로토콜이 이것을 구현한다고 생각하면이라고 생각한다.