我正在使用 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 并且它工作正常。