2015-09-15 2 views
1

У меня есть это работающее приложение PhoneGap, построенное с помощью пользовательских интерфейсов AngularJS и Onsen, которое обращается к файлу PHP, где он получает некоторые данные в ответе. Php-файл находился в домене с простым http, но теперь, когда я переместил его в тот, который поддерживает https, я продолжаю сталкиваться с некоторыми странными проблемами.Простой HTTP GET не работает с https для получения JSON

Я попытался использовать метод AngularJS async для получения данных, а также вызов ajax.

$http.get('https://blablabla.com/file.php?parameters').then(function(response) { 
     //SUCCESS 
     alert(response); 
     var z = response; 
    },function(response) { 
     alert("Failed"); 
}); 

Он идет к части УСПЕХА, но данные, которые у меня есть, неверны. Она должна быть строка (обычную строку JSON, что я stringify и преобразовать в объект JSON)

Аякса вызов заключается в следующем:

function httpGet(theUrl) { 
    var dataToReturn; 
    $.ajax({ 
     type: 'GET', 
     url: theUrl, 
     cache: false, 
     async: false, 
     data: "", 
     success: function(data, textStatus, result) { 
      dataToReturn = data; 
     }, 
     error: function (result, textStatus, errorThrown) { 
      alert("Failed to get response from server!"); 
     } 
    }); 

    return dataToReturn; 
    //var xmlHttp = new XMLHttpRequest(); 
    //xmlHttp.open("GET", theUrl, false); // false for synchronous request 
    //xmlHttp.send(null); 
    //return xmlHttp.responseText; 
}; 

Я в основном вызова PHP скрипт, который в https, из приложения PhoneGap. Если я поменяю адрес на http, он работает безупречно ...

Я также хочу, чтобы вы заметили, что PhoneGap в основном создает своего рода локальный прокси. Я не уверен, как это выдумать, хотя ...

Любые идеи о том, как решить эту проблему, получить те же данные, что и я, когда адреса просты «http»?

+0

Возможно, вам потребуется проверить, работает ли прокси-сервер PhoneGap на порту 443. Похоже, он уже работает на порту 80, так как у вас нет проблем. Https использует порт 443, поэтому убедитесь, что прокси настроен для работы на обоих портах. –

+0

Возможно, вы захотите ознакомиться с [той же политикой происхождения] (https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). – Andrew

+1

Можете ли вы включить образцы данных, возвращаемых для HTTP и HTTPS, в ваш вопрос? Кроме того, попробовали ли вы использовать сетевые инструменты браузера или что-то вроде Fiddler для изучения запросов? –

ответ

0

Угловые автоматически преобразует JSON, лучше, если вы установите соответствующий заголовок из вашего PHP ServerSide:

header('Content-Type: application/json'); 

непосредственно перед эхом.

Второй прибудете, кажется, отсутствует скобка

$http.get('https://blablabla.com/file.php?parameters') 
    .then(function(response) { 
     //SUCCESS 
     alert(response); 
     var z = response; 
    },function(response) { 
     alert("Failed"); 
    }); 

В-третьих, реакция не идет прямо на ответ больше, но response.data так что вы можете попробовать

alert(response.data); 
var z = response.data; 

Внимание! это сильно зависит от вашей версии Angular.js

Существует несколько различных синтаксисов для использования объекта $ http в зависимости от угловой версии, на которой вы находитесь.

Смежные вопросы