2012-05-25 3 views
1

JQuery Mobile 앱이 있습니다. 이 응용 프로그램은 원격 웹 서비스를 공격해야합니다. 로컬 파일 시스템에서 앱을 실행하면 앱이 제대로로드됩니다. 그런데 버튼을 클릭하면 웹 서비스와 상호 작용하려고 시도합니다.PhoneGap의 JQuery Mobile 앱에서 웹 서비스에 연결

var vm = getParameters(); 
$.ajax({ 
    url: https://www.mydomain.com/myService/myAction, 
    type: "POST", 
    data: JSON.stringify(vm), 
    contentType: "application/json", 
    success: action_Succeeded, 
    error: action_Failed 
}); 

내가 잘못 뭐하는 거지 :

XMLHttpRequest cannot load https://www.mydomain.com/myService/myAction. Origin null is not allowed by Access-Control-Allow-Origin 

내가 다음 코드로 서비스를 공격하려고 : 나는 웹 서비스를 공격 할 때, 나는 말한다 콘솔에서 오류가 보이십니까? 이 게시물의 모든 행운을하지 않고 모든 것을 시도 : XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.

내 응용 프로그램은 Visual Studio를 통해 실행할 때 작동합니다. 내 직감은 그 시점에서 웹 서버 컨텍스트에서 실행된다는 것입니다. 그러나 PhoneGap을 통해 배포하고 싶습니다. 그렇기 때문에 웹 서버의 컨텍스트 내에서 실행하는 것은 문제가되지 않습니다. 그래서 로컬 파일 시스템을 통해 모든 파일 시스템을 실행하면 모든 것이 잘될 것이라고 생각했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

정말 고마워요!

답변

1

것은 당신의 config.xml 파일을 확인 (당신은 폰갭 빌드 서비스를 사용하는 경우 - 다른 안드로이드 아이폰 OS, AndroidManifest.xml을 ...에 대한 .plist 파일을 확인)이 줄을 추가 :

<access origin="*" /> 

Access-Control-Allow-Origin: * 
,536 :
<access origin="https://mydomain.com" subdomains="true" /> 

그리고 서버 측

, 당신이 HTTP 헤더를 반환해야합니다 :이 작동하는 경우처럼

, 당신은 더 제한적인 액세스 규칙을 설정하려고 할 수 있습니다

+0

답변 해 주셔서 감사합니다. 나는 아직도 조금 혼란 스럽다. 위에서 언급 한 것들이 없으면 응용 프로그램은 내 dev env에서 작동합니다. 웹을 통해 사용하는 테스트 환경으로 밀어 넣으면 작동합니다. 그러나 로컬 파일이 테스트 환경에서 호스팅되는 웹 서비스에 접근하려고 시도 할 때 작동하지 않습니다. 이유를 설명해 주시겠습니까? 정말 고맙습니다. –

+0

dev/test 환경은 무엇입니까? 데스크톱 브라우저에서 페이지를 실행하고 있습니까? '로컬 파일'은 무엇을 의미합니까? 위의 구성은 페이지가 phonegap 컨테이너에있을 때 필요합니다 (Android, iOS 등에서 앱으로 실행). – chrisben

+0

내 앱의 첫 번째 페이지에서 웹 서비스를 누르십시오. DEV 웹 서버에서 실행되는 내 DEV env에서 정상적으로 작동합니다. Visual Studio가 시작됩니다. 그런 다음 전체 프로젝트가 TESTING 웹 서버 (IIS 7)에서 실행되도록 승격했습니다. 앱이 벌금을 부과합니다. 그런 다음 전화 에뮬레이터를 통해 서비스에 접속하려고 시도했지만 작동하지 않았습니다. PhoneGap이 로컬 파일 (http://jquerymobile.com/demos/1.1.0/docs/pages/phonegap.html)로로드되기 때문에 Chrome의 로컬 컴퓨터에서 index.html 파일을 열기로 결정했습니다. 나는 이것이 시험 서비스 URL을 가리키고 있음을 확신시켰다. 그러나, 나는 아직도 언급 된 오류를 얻는다. –

관련 문제