Междоменные запросы с использованием PhoneGap и jQuery не работают.

Я создаю приложение PhoneGap для Android. Чтобы получить данные с (удаленного) сервера, я делаю вызов REST, используя функцию jQuery $.ajax(). Есть несколько вещей, которые вы должны знать:

  • Тип вызова должен быть 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

Я знаю, что это как-то связано с выполнением междоменных запросов, но я не знаю, как решить эту проблему. Я пробовал несколько способов исправить это, но безрезультатно:

Проблема также что-то связанное с той же политикой происхождения, но это не относится к протоколу file://, который PhoneGap использует для загрузки локального html-файла.

В моем файле AndroidManifest.xml установлен параметр


.

Я пытаюсь исправить это уже 2 дня, но пока безрезультатно.Это вообще возможно сделать? У вас есть какие-нибудь советы для меня, чтобы я мог двигаться дальше?

Заранее спасибо!

19
задан weerd2 16 April 2012 в 11:42
поделиться