0

我正在使用 Appgyver Steroids 和 angularjs 构建一个 Web 应用程序,该应用程序与不同域上的后端服务器通信。

这是相关代码(故意愚蠢;我试图隔离问题):

控制器:

// 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 响应。

但是,当代码封装在 steroids 应用程序中并在 iOS 模拟器中运行时,它不会向服务器发出请求。我得到一个等于 0 的状态代码,并且在我设置的数据包分析器中看不到任何请求的迹象,也看不到我服务器的日志(在本地主机上运行,​​如应用程序)。我还没有在真机上试过。

请注意,AngularJS 似乎配置正确,因为我在应用程序的其他部分使用它,并且它在 iOS 模拟器中正常工作(尽管这些其他控制器不执行任何 HTTP 调用)。

知道可能出了什么问题吗?

编辑

感谢Marcin的回答,我意识到 iOS 模拟器正在虚拟机上运行,​​这意味着在其中调用 localhost 没有意义。我改用 127.0.0.1:8080 并且它工作正常。

4

1 回答 1

1

您将 url 指定为 localhost。改用打开服务器的 PC 的 IP。本地主机仅在服务器所在的本地工作。

于 2014-07-08T07:01:58.533 回答