2013-08-09 2 views
0

웹 서버가 내장 된 제어 프로세서에 액세스하려고합니다. 컨트롤러에 프로그래밍 된 특정 값을 기반으로 jQuery 또는 js를 사용하여 서버에 내장 된 웹 사이트를 통해 작업을 트리거 할 수 있습니다. jQuery post 명령으로 문제가 발생했습니다. 고글의 REST 플러그인을 사용하면 모든 것이 작동하고 성공적으로 응답을받습니다. 어떤 아이디어?

function GetVariableValuesByName(name) { 
    $.post("http://10.10.254.11/RPC/", { 
     method: "GetVariableValuesByName", 
     param1: name, 
     encoding: "2" 
    }).done(function (data) { 
     data = String(data); 
     var info = data.responseText; 
     alert(info); 
    }).fail(function (data) { 
     data = String(data); 
     alert("error " + data) 
    }).always(function (data) { 
     data = String(data); 
     alert("just in case " + data); 
    }); 
} 

마지막 기능 예제에서는 xmlhttp 개체를 만든 것으로 가정합니다.

function GetVariableValuesByName(name) { 

$.ajax({ 
type: "POST", 
url: "http://10.10.254.11/RPC/", 
data: { method: "GetVariableValueByName", param1: "VOL_BAR", encoding: "2" } 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}).fail(function(msg) { 
    alert("error " + msg) 
}); 
} 

function GetVariableValuesByName(name) { 

xmlhttp.open("POST","http://10.10.254.11/RPC/",false); 
var theString = "method=GetVariableValueByName&param1=" + name; 
xmlhttp.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded"); 
xmlhttp.send(theString);  
var wacivar = xmlhttp.responseText; 
wacivar = String(wacivar); 
wacivar = wacivar.substr(19); 

alert(wacivar); 
} 
+0

서버를 때리는 것이 아니라는 것을 어떻게 확인하고 계십니까? 응답이 없거나 응답이 실패했다고해서 반드시 서버에 도달하지는 않습니다. –

+0

발신 트래픽을 살펴 보았습니까? – Dave

+0

몇 주 동안이 프로젝트를 진행해 죄송합니다. 피곤합니다. 컨트롤러에는 웹 서버가 내장되어 있지만 속도가 느려서 내 사이트를 내 사무실 주변에 배치 한 아파치 상자로 옮겼습니다. 아파치 상자에서 명령을 실행하고 컨트롤러의 내장 서버를 호출하는 보안 문제가있는 것 같습니다. 이것에 대한 아이디어가 있습니까? – user2510031

답변

0

당신은 당신이하는 동안 다른 도메인에 AJAX 요청을 할 수 있다는 것을 의미하는 동일 출처 정책을 타격, 당신은 응답을 읽을 수 없습니다 (당신 콜백이 발사되지 않는 이유입니다). 해결책은 CORS (서버 측 HTTP 응답에 여분의 헤더 추가) 또는 JSONP (JSONP 콜백을 사용하여 사용자 정의 응답) 중 하나를 사용하는 것입니다. CORON을 사용하는 것이 더 나은 오류 처리를 제공하므로 조언을 해주고 JSONP는 해킹을 더 많이합니다.

CORS를 사용하려면 크로스 도메인이어야하는 응답에 위키피디아 문서의 설명 된 헤더를 추가하십시오.

당신은 해결책의 예를 물었지만 솔루션은 JSONP와 CORS 모두에 대해 서버 측에서 구현되어야합니다.

+0

정확히 어떻게 구현 되었는가? 디렉토리에 배치 할 수있는 파일이 있습니까? 내 무지를 용서해주십시오. – user2510031

+0

서버 측 언어는 무엇입니까? PHP? PHP에서 당신은 여기에 설명 된 것과 같은 응답에 대한 HTTP 헤더를 설정해야합니다 http://remysharp.com/2011/04/21/getting-cors-working/ –

+0

컨트롤러에 내장 된 서버에서 액세스 권한이 없습니다 구성 파일을 변경하고 PHP를 실행할 수 없습니다. 필요한 경우 apcache 파일과 같은 텍스트 파일을 추가 할 수는 있지만 그게 전부입니다. 또한 .asp에서 서버 측 포함을 수행합니다. 아파치 서버에서 아파치 서버. 지금 당장은 아무것도 추가로 설치하지 않았습니다. – user2510031

관련 문제