2011-09-29 3 views
5

Ext.Ajax.request (ExtJS 3 포함)을 사용하여 크로스 도메인 요청 (일부는 POST 요청)을 보내는 것으로 보이는 스크립트로 작업하고 있습니다. ExtJS3에서 벗어나기위한 고려 사항이 있지만 (아마도 ExtJS에서 벗어나기도하지만) XMLHttpRequest을 사용하는 빠른 시도는 효과가 없었습니다. 크로스 도메인 요청을 보내는 데 어떤 기술이 사용되고 있는지 어떻게 알 수 있습니까?Ext.Ajax.request를 사용하는 크로스 도메인 POST 도메인 요청

답변

-2

당신은 JQuery와 예를 JSONP 사용하려고 할 수 있습니다

$.ajax({ 
    url: "test.php", 
    dataType: "jsonp" 
    success: function(data){ 
    console.log(data) 
    } 
}); 

을 또는 당신이 요청 된 콘텐츠에 액세스 할 경우 액세스 제어 - 허용 - 원산지 헤더를 설정할 수 있습니다. PHP의 예 : Ext JS 3.4 online documentation 소스 코드를 추적하는 데 사용할 수있는 Ext.Ajax 클래스 상속 모델을 제공합니다

header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
0

Ext.Ajax.request 메소드 호출에 상관 관계. 그러나 휠을 다시 만드는 데 더 많은 시간과 리소스를 소비하는 대신 리모트 스토어에 대한 도메인 간 요청을 용이하게하기 위해 기본 설정 인 Ext JS Ext.data.ScriptTagProxy 클래스를 proxy 구성 옵션을 통해 기존 스토어에 구현하는 것이 좋습니다. 아래는 내가 언급 한 것의 축약 된 예이다.

var myJsonStore = new Ext.data.JsonStore 
({ 
    autoLoad : true, 
    proxy : new Ext.data.ScriptTagProxy 
    ({ 
     url : 'http://www.cross-domain.com/file.php' 
    }), 
    fields : ['myIdColumn','myCharColumn','myDateColumn'] 
}); 

ADDITION

당신은 내선 JS가 ACD (AJAX Cross Domain) 라이브러리를 체크 아웃하십시오 사용에서 멀리 이동에 의도 때문이다.

+0

하지만 ExtJS를 사용하지 않으려 고하고 있습니다.이게 ExtJS 사용을 계속 권장하지 않습니까? –

+0

반드시 그렇지는 않습니다. Ext JS 3.4 클래스의 상속 모델과 Ext JS 3.4 온라인 문서를 사용하는 기본'request' 메소드 로직을 검토하여 시작하는 것이 좋습니다. 거기서 시작하고 상속 계층 구조를 이해하면 트리를 쉽게 탐색 할 수 있어야하며, 도메인 간 요청을 쉽게 처리 할 수있는 수퍼 클래스 방법과 논리를 식별하고 검토해야합니다. 필자의 예는 잘못 전달되었을 수도 있지만, 찾고자하는 것을 찾을 가능성이있는 특정 'Ext.data.ScriptTagProxy' 클래스를 암시하기위한 것입니다. –

+0

제발 도메인 간 지원을 제공하는 매우 간단하고 가벼운 JavaScript AJAX 라이브러리를 추가하십시오. 자생 솔루션을 작성할 때 라이브러리 자체 또는 소스 코드를 참조로 사용할 수 있습니다. –

3

현재 ExtJS 3.3.1을 사용하고 있습니다. 아직 4로 전환하지는 않았지만 새로운 프로젝트가 생길 때 가장 가능성이 높습니다. Ext 소스를 보지 않고도이 작업을 수행하기 위해 JSONP을 사용하고 있다고 말할 수 있습니다. JavaScript가 same-origin policy을 준수해야하므로 크로스 도메인 AJAX 호출을 수행하는 유일한 방법입니다.

JSONP의 순수 JS 구현을 시도하고 있습니까? 아니면 이미 JS 라이브러리를 사용하고 있습니까? 우리의 코멘트를

편집

은 ... 그들은 POST 요청을하고 있습니다. JSONP에서는 불가능합니다. 그래서 제가 말할 수있는 한, 그들은 iframe과 비슷한 속임수를 사용하고 있습니다. 구식 브라우저에서 파일을 업로드 할 때 "AJAX"와 동일한 트릭이 사용됩니다.

This 링크는 더 자세히 설명합니다.

Valum's file uploader에도 동일한 방법 (iframe에서 POST, 파일 업로드)이 사용됩니다. ExtJS 소스를 따르는 것이 훨씬 쉽습니다.

+0

하지만 JSONP를 사용하여 POST 요청을 보낼 수 있습니까? Firebug에서 네트워크 활동을보고 있고 페이지에서 도메인 간 POST 요청을 보내고 있습니다 –

+0

이제 호기심이 생깁니다 ... JSONP는 GET 요청 만 보낼 수 있다고 가정합니다. 나는 파고 갈거야. –

+0

너와 나 둘 다! –

0

JSONP는 해킹 비트이지만 사용할 수 있습니다.

그러나 교차하는 도메인을 제어하는 ​​경우 CORS를 사용하는 것이 좋습니다. CORS는 웹 사이트의 응답에 헤더 (Access-Control-Allow-Origin)를 포함시킵니다. http://enable-cors.org/

IE 8 이상 (Firefox, 웹킷 브라우저 포함), Firefox 및 WebKit 브라우저에서 지원됩니다.IE주의 사항은 다음과 같습니다. IE는 CORS 요청에 대해 다른 요청 개체 (XDomainRequest)를 사용합니다. Opera를 지원해야하는 경우 JSONP 또는 polyfill (플래시가 필요한 https://github.com/gimite/web-socket-js/과 같은 것)을 사용해야합니다.

문제의 도메인을 제어하지 않으면 CORS를 지원하도록 요청할 수 있습니다.