Cordova Angular拒绝网络Api连接

Sea*_*_05 5 javascript asp.net android angularjs cordova

我正在使用Visual Studio 2013 Update 4,我有一个web api项目设置来接收返回数组的get请求.对于客户端应用程序我已设置cordova并使用ng-resource模拟一个Android角度应用程序来调用web api get.每次我调用GET时都会收到ripple.js错误,表示连接被拒绝.即使我尝试使用真正的Android设备,我也会拒绝连接.使用纹波仿真器时出现错误

OPTIONS http://****:4400/ripple/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rur…Fget%3D%257B%2522method%2522%3A%2522GET%2522%2C%2522array%2522%3Atrue%257D net::ERR_CONNECTION_REFUSED

我确信在web api 2服务器上启用了cors,因为cordova和web api项目是同一本地主机上的不同端口号.我通过角网页创建了一个完全复制的cordova角应用程序,不仅证明了cors功能,还证明了代码.我也尝试过postman并且都正确地得到了json的反应.只有cordova Android应用程序给我连接被拒绝.任何帮助将不胜感激!

这是角度得到的样子

app.factory('mrMaintService', function ($resource) {
    return $resource('http://localhost:15528/api/requests', {
        get: { method: 'GET', array: true }
    });
});
Run Code Online (Sandbox Code Playgroud)

这表明我允许web api项目中的所有域:

 <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

Sea*_*_05 13

解决方案是从模拟器中的下拉列表中禁用跨域代理.如果您不熟悉纹波仿真器,则很容易犯错误.


Eri*_*yer 6

有关访问问题(与http://localhost此相同127.0.0.1)的答案可以在这里找到:http://developer.android.com/tools/devices/emulator.html - 其中说:

"另请注意,127.0.0.1开发机器上的地址对应于模拟器自己的环回接口.如果要访问在开发机器的环回接口(在您的机器上也称为127.0.0.1)上运行的服务,则应使用特殊地址10.0.2.2代替."

所以,而不是使用http://localhostuse http://10.0.2.2然后追加你正在使用的任何端口.示例:http://localhost:8001可以访问http://10.0.2.2:8001