Angularjs + стероиды: $http не получит URL-адрес приложения, но работает в браузере

Я создаю веб-приложение, используя Appgyver Steroids и angularjs, и это приложение связывается с внутренним сервером в другом домене.

Вот соответствующий код (тупой нарочно; я пытался выделить проблему):

контроллер:

// App.
var app = angular.module('app', []);

// signup controller.
app.controller('SignupCtrl', function($scope, $http) {
    $scope.signup = function() {
        $http({
            method: 'GET',
            url: 'http://localhost:8080/watch/abcde/eta',
            responseType: 'json'
        }).success(function(data, status, headers, config) {
            console.log('Success!');
        }).error(function(data, status, headers, config) {
            console.log(status);
        });
    };
});

Посмотреть:

<div ng-app="app" ng-controller="SignupCtrl">
  <h1>Test</h1>
  <button ng-click="signup()">Click Me!</button>
</div>

Я правильно настроил сервер, чтобы он включал CORS. Я протестировал код в Chrome и Safari, и он работает правильно: я получил правильный ответ JSON с сервера.

Однако, когда код инкапсулируется в приложение стероидов и запускается в симуляторе iOS, он не отправляет запрос на сервер. Я получаю код состояния, равный 0, и я не вижу никаких признаков запроса в анализаторе пакетов, который я настроил, ни в журналах моего сервера (работающего на локальном хосте, как приложение). Я еще не пробовал на реальном устройстве.

Обратите внимание, что AngularJS кажется правильно настроенным, потому что я использую его в других частях приложения, и он работает должным образом в симуляторе iOS (хотя эти другие контроллеры не выполняют никаких HTTP-вызовов).

Есть идеи, что может быть не так?

РЕДАКТИРОВАТЬ

Благодаря ответу Marcin Mikołajczyk я понял, что iOS Simulator работает на виртуальной машине, а это означает, что вызывать локальный хост внутри него не имеет смысла. Я использовал 127.0.0.1:8080 вместо этого, и он работает правильно.

1 ответ

Решение

Вы указали URL как локальный. Вместо этого используйте IP-адрес вашего ПК, на котором включен сервер. Localhost работает только локально, где включен сервер.

Другие вопросы по тегам