Android 용 PhoneGap 앱을 만들고 있습니다. (원격) 서버에서 데이터를 얻으려면 jQuery의 $ .ajax() 함수를 사용하여 REST 호출을 작성한다. 몇 가지 당신이 알고 있어야합니다 있습니다 : 서버가 예상 통화PhoneGap 및 jQuery를 사용한 도메인 간 요청이 작동하지 않습니다.
- 유형
- POST 해야합니다 JSON 데이터 (적어도 사용자 이름 및 암호)
- 서버가 다시 보냅니다 JSON 데이터
코드 :
는function makeCall(){
var url = "http://remote/server/rest/call";
var jsonData ='{"username":"'+$('#username').val()+'","password":"'+$('#password').val()+'"}';
$.ajax({
headers: {"Content-Type":"application/json; charset=UTF-8"},
type: "POST",
url: url,
data: jsonData,
dataType: "json",
success: succesFunction,
error: errorFunction
});
}
그러나,이 작동하지 않습니다. Firebug를 사용하여 서버 응답을 볼 때 아무 것도 없습니다. TcpTrace를 사용하면 요청의 헤더를 볼 수 있습니다. 예상되는 POST 메서드 대신 OPTIONS 메서드가 있으며 일부 이상한 헤더가 추가되었습니다.
OPTIONS /remote/server/rest/call HTTP/1.1
Host: localhost:8081
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: nl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
도메인 간 요청과 관련이 있다는 것을 알고 있지만 문제를 해결하는 방법을 모르겠습니다. 나는 그것을 해결하기 위해 몇 가지를 시도하지만 결과 :
는- 'JSON'대신에 사용 'JSONP는' 는
- 시도는 문제도 할 수있는 뭔가가 Cross-Origin Resource Sharing (CORS)
를 사용하는 동일한 오리진 정책을 가지고 있지만, 이것은 PhoneHap이 로컬 html 파일을로드하는 데 사용하는 // file : // 프로토콜에는 적용되지 않습니다. 내의 AndroidManifest.xml 파일에서
,
<uses-permission android:name="android.permission.INTERNET" />
를 설정하는 옵션.
지금 2 일 동안이 문제를 해결하려고하지만 지금까지 결과가 없습니다. 이것도 가능합니까? 계속 나아갈 수 있도록 나를위한 조언이 있습니까?
미리 감사드립니다.
문제가 해결되었을 수도 있지만 이것이 도메인 간 요청 문제를 해결하는 해답이 아닙니다. – Asqan