Cross-domain requests using PhoneGap and jQuery doesn't work

ajax, cordova, cross-domain, jquery

Solution

I solved the problem by myself. The problem is located in the url, where I have to add a domain. I changed

`var url = "http://remote/server/rest/call";`

to

`var url = "http://remote.mydomain.com/server/rest/call";`

and it works!

I assumed the first url should work because it works on an iphone app with exact the same url and settings. It has also something to do with a double firewall(Windows and ESET firewall) where I shut down the Windows firewall.

Anyway, thanks for your answers!

Problem

I'm creating a PhoneGap app for Android. To get data from the (remote) server I make a REST call using jQuery's $.ajax() function. There are a few things you must know: - Type of the call must be POST - The server expects JSON data(at least username and password) - The server sends back JSON data The code: ``` 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 }); } ``` But, this doesn't work. When I use Firebug to see the servers response, there is nothing. With TcpTrace I can see the headers of the request. Instead of an expected POST method, there is an OPTIONS method, with some strange headers added. ``` 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 ``` I know it has something to do with doing cross-domain requests, but I don't know how to solve the problem. I tried a few things to fix it, but with no result: - Use 'jsonp' in stead of 'json' - Try to use Cross-Origin Resource Sharing (CORS) The problem has also something to do with same origin policy, but this does not apply to the file:// protocol PhoneGap is using to load a local html file. In my AndroidManifest.xml file, the option ``` <uses-permission android:name="android.permission.INTERNET" /> ``` is set. I'm trying to fix this for 2 days now, but no result till now. Is this even possible to do? Do you have any tips for me so I can move on? Thanks in advance!

Original source