Android设备中的Cordova Http请求问题

时间:2016-01-19 12:27:29

标签: android angularjs cordova http ionic-framework

我有Cordova> 4.0.0,因此它具有CSP和白名单安全措施。

在浏览器中,我可以向API发出请求,但在Android设备中,它会给我这个错误:

  

file:/// http:/xxx.xxx.xxx/api/Login/DoLogin

     

无法加载资源:net :: ERR_FILE_NOT_FOUND

我搜索了一个解决方案,但没有任何效果。

我的config.xml包含这些字段(根据Cordova Whitelist Plugin文档):

 <allow-navigation href="*" />
 <allow-intent href="*" />
 <access origin="*" />"

信息:我尝试使用此参数的多个组合,以及Api的URL。 (例如:<access origin="http://xxx.xxx.xxx/" subdomains="true" />

在我的Index.html中,我有这个CSP:

 <meta http-equiv="Content-Security-Policy" 
 content="default-src *; style-src * 'self' 'unsafe-inline' 'unsafe-eval';
               script-src * 'self' 'unsafe-inline' 'unsafe-eval';">

信息:在这里,我根据Cordova Whitelist Plugin

尝试了其他CSP组合

所以,在有人问我安装之前:

  • 科尔多瓦白名单-插件

使用Restangular作为请求。

我无法理解,有人可以帮助我吗?

编辑:请求代码

  

var baseLogin = Restangular.all('http:/xxx.xxx.xxx/api/Login/DoLogin');

dataApi.doLogin = function (var1, var2, var3, var4, var5) {
    // $http() returns a $promise that we can add handlers with .then()
    var parameter = null;
        parameter = {
            var1: var1,
            var2: var2,
            var3: var3,
            var4: var4,
            var5: var5
        };
    return baseLogin.post(parameter);
};

我使用Ionic,因此它在浏览器中有CORS问题,以解决我在ionic.project文件中使用代理,但它只在浏览器中调用,在设备中它没有使用它。

1 个答案:

答案 0 :(得分:1)

尝试从您的网址中删除“文件”,如@Phonolog所述。

没有必要,可能会导致手机内部异常。 尝试使用 http:/xxx.xxx.xxx/api/Login/DoLogin ,就像使用WCF服务一样。还要确保此端点已正确配置为接受传入请求。

Addendun:另外,你应该小心这些标签:

<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />"

这意味着允许访问所有内容,并允许与其他应用程序/服务进行通信。所以要小心,这可能会在将来引发安全问题。