2011-05-16 4 views
1

이 제한을 무시할 수 있습니까? 나는 어떤 종류의 프록시를 사용할 수 있지만이 프록시가 어떻게 보이는지 확실하지 않습니까?xmlHttpRequest 및 사이트 간 제한

다른 제안 사항이 있으십니까?

+0

가능한 교차 사이트 XMLHttpRequest (http://stackoverflow.com/questions/395045/cross-site-xmlhttprequest) – Hamish

답변

2

를 보라 외부 도메인에서 데이터를 요청한 다음 결과를 반환합니다.

0

$ .ajax() 호출을 사용할 수 있습니다.

여기에는 크로스 도메인 요청을 처리하는 crossdomain 속성이 있습니다. http://developer.yahoo.com/javascript/howto-proxy.html

는 기본적으로, 당신은 XMLHttpRequest를 소요하는 서비스를하고 있습니다 jQuery를 사용하여 크로스 도메인 요청에 대한

http://api.jquery.com/jQuery.ajax/

는 여기에 매우 간단 튜토리얼 인 http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/

+0

코드 예제 - xmlHttpRequest (예 : DELETE) 대신 사용할 수있는 코드 예제를 추가 할 수 있습니까? 요청이 아니라 POST 또는 GET 요청). –

+0

이 속성은 실제로 google.ca에서 ajax 요청을 수행하기 위해 프록시의 필요성을 대체합니다 (예 :). –

+0

@Erik : 답변 편집 – dhinesh

1

JSONP 그 목적

JSONP 또는 "패딩 JSON은"기본 JSON 데이터 형식으로 보완을 위해 정확하게, 사용의 패턴은 서버로부터 데이터를 요청하는 페이지를 허용하는 다른 도메인에 있습니다. 이 문제에 대한 해결책으로 을 사용하면 JSONP는 보다 최근의 방법 인 Cross-Origin Resource Sharing 대신 입니다.

다음은 JSONP 구현의 매우 기본적인 예입니다.

서버 측 코드 -

public string GetFirstName() 
     { 
      string callback = Request.QueryString["callback"]; 
      string resultJson = "{\"FirstName\": \"archil\"}"; //should definitely be some more application specific data :) 

      if (!string.IsNullOrEmpty(callback)) 
      { 
       return string.Format("{0}({1})", callback, resultJson); 
      } 
      return resultJson; 
     } 

이 방법은 서버에/GetFirstname URL에 매핑됩니다. 쿼리 문자열에서 callback 인수를 빼 냈습니다. 그리고 랩핑은 resultJson을 javascript 함수 호출로 생성했습니다. 여기서 함수의 이름은 콜백과 함께 전달 된 매개 변수입니다. jQuery를 사용하여 클라이언트 측에서

는 - 구현이 서버로 콜백 함수 이름 alert 합격 간단

$(function() { 

     $.ajax('http://serverUrl/GetFirstName', { 

      dataType: 'JSONP', 

      jsonpCallback: 'alert' 

     }); 

    }); 

같다. 서버는 alert({"FirstName": "archil"})을 반환합니다. jQuery는이 응답을 자동으로 검사하여 실행합니다. 결과적으로 브라우저에서 경고 메시지가 나타납니다. 주요 아이디어는 alert이 실행되면 서버의 반환 매개 변수입니다. jsonpCallback과 같이보다 구체적인 함수명을 전달할 수 있으며 요청 결과에 따라 행동 할 수 있습니다.

나는 여기에 사용 된 URL 패턴이 더 REST 스타일보다는 RPC 스타일의 웹 서비스 같은 것을 알고 있지만, 예를 들어 여기에

+0

JSONP를 사용하여 REST 요청을 수행하는 방법을 잘 모르겠다. –

+0

그런데 REST 요청을 수행 할 수 없다는 것은 HTTP 요청임을 의미한다. JSONP는 서버에서 지원해야합니다. wikipedia 기사를 읽으십시오. http://en.wikipedia.org/wiki/JSONP#How_it_works – archil

+0

클라이언트 측에서 http://api.jquery.com/jQuery.ajax/를 사용하여 작업을 단순화 할 수 있습니다. – archil

0

는 프록시를 만드는 기본 단계하지 REST 아키텍처에 대해, JSONP를 사용하는 방법에 대한 것입니다.

  • (PHP 나 ASP.NET과 같은 서버 측 언어를 사용하면 별 문제가되지 않습니다.) 예를 들어 "MyProxy"라고합니다.aspx "
  • 서버 측 코드에서 URL 또는 POST 데이터로 전송 된 데이터를 읽고 해당 데이터를 웹 요청 (.NET의 경우 PHP와 다른 언어에서 확실하게 동일) 외부 웹 사이트로 보냅니다.
  • 외부 웹 사이트에서 보낸 결과를 구문 분석하여 클라이언트에 다시 보냅니다.
  • 클라이언트에서 AJAX 요청을 적절한 데이터를 전달하는 프록시 페이지 (예 : MyProxy.aspx)로 보내고 응답을 처리합니다.

위의 구현을 위해 기술적 인 도움을 받으려고 사용하는 서버 측 언어를 알려주십시오.