在真实设备上的cordova app请求中出现net :: ERR_CONNECTION_TIMED_OUT错误

我有一个在Chrome浏览器和(genymotion)模拟器上运行良好的应用程序。

但是,如果我在智能手机上运行它,每个服务器请求(post,get,put)都会给出结果: Failed to load resource: net::ERR_CONNECTION_TIMED_OUT

我的设置:

cordova:5.2.0

config.xml文件:

      

jQuery的:

 $.support.cors=true; 

我的要求:(我也用骨干做了同样的结果)

 $scope.loginRequestObject = $scope.getLoginObject(); $.ajax({ url : $scope.baseUrl + "/myTable", type : 'post', contentType : 'application/json; charset=utf-8', scriptCharset : "utf-8", data : JSON.stringify($scope.loginRequestObject), dataType : 'json', fail : function(a,b,c){ console.log(a); console.log(b); console.log(c); }, success: function(a,b,c){ console.log(a); console.log(b); console.log(c); }); 

我通过导出和运行(cordova运行android)运行我的应用程序,我的手机有无线连接。

@Asqan,
你犯了一个常见的错误,这个错误列在Cordova / Phonegap新手的开发者的顶级错误中 。 在这种情况下,您需要将white-list插件和CSP到您的网页。

另一种方法是快速修复 – 但要知道此修复程序会删除white-list所有需求。 这会产生一个您可能不希望通过的安全问题 。

QUICK FIX将此添加到config.xml

答案很长就是这样:

从Cordova / Phonegap新手开发人员的热门话题中你可以获得 :

  • #6 没有为编译器设置“phonegap版本”
  • #7 没有为你的插件设置“版本”
  • #10 不在config.xml中添加新的“white-list”和“white-list plugin”参数。

#6&#7

使用CLI版本,如果没有为您的平台分配版本,或者如果未在config.xml中设置phonegap-version,则在“Phonegap Build”中,您将获得最新版本。 如果运气好,您的程序就会按预期运行。 如果你不幸运,你会得到一组级联错误。

对我们所有人来说幸运的是,Holly Schinsky撰写了一篇很好的博文来解释这一切:

Cordova / PhoneGap版本混乱
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/

对于#10

这个相对* NEW *的要求意味着 – 要访问网站上的任何网站或资源,您必须使用白名单和白名单插件。 如果您使用cordova-android@4.0.0或更高版本,此要求将生效; 包括cli-5.1.1。 但是,如果您的版本在4.0.0之前,假设为3.5.0或3.7.0,那么您将不必添加白名单要求。

要明确的是,“白名单”已经存在了一段时间,但插件和要求是非常新的。 正如您所料,当添加“白名单”时,不推荐使用事实上的开放访问function。 或者换句话说,事实上的开放访问function已经计划并计划被淘汰。 此更改标志着删除开放访问function的一个步骤。

此外,内容安全策略(CSP)已经吸引了众多开发人员 – 因为它的公开性很差。 根据您的使用情况和您使用的Phonegap版本,CSP需要进入您使用的每个HTML页面,就像您必须等待’deviceready’一样。 但是,有些情况根本不需要它。 文档令一些人感到困惑,请仔细阅读。 该文档隐藏在许多最新文档页面的底部。

相关链接

Phonegap Build Forum: 在PGB上升级到cli-5.1.1的注释 ,现在需要白名单

  • cordova白名单指南
  • Phonegap白名单指南
  • Phonegap构建白名单指南