超时 AJAX 请求 Cordova 5

Posted

技术标签:

【中文标题】超时 AJAX 请求 Cordova 5【英文标题】:Timeout AJAX Requests Cordova 5 【发布时间】:2015-10-10 19:18:17 【问题描述】:

以前工作的 cordva 项目在设备上运行时不再能够通过 AJAX 检索数据,尽管相同的代码在 Ripple 模拟器中工作。我添加了cordova-plugin-whitelist,现在请求立即超时,错误消息为空。还有别的事吗?

【问题讨论】:

【参考方案1】:

许多常见的白名单问题的修复

替代方法是这个快速修复——但要知道这个快速修复消除了对white-list 的所有需求。这会创建一个您可能不想绕过的security issue。

快速修复将此添加到您的 config.xml 以供 PHONEGAP BUILD ONLY<preference name="phonegap-version" value="3.7.0" />

长答案是这样的:

来自Top Mistakes by Developers new to Cordova/Phonegap,您已点击:

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

#6 & #7

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

幸运的是,Holly Schinsky 写了一篇很好的博文来解释这一切:

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

#10

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

需要明确的是,“白名单”已经存在了一段时间,但插件和要求是非常新的。如您所料,当添加“白名单”时,事实上的开放访问功能已被弃用。或者换一种说法,事实上的开放访问功能是计划和计划取消的。这一变化标志着在移除开放获取功能方面迈出了一步。

此外,内容安全政策 (CSP) 吸引了众多开发人员 - 因为它的宣传太差了。 根据您的使用情况和您使用的Phonegap 版本,CSP 需要进入您使用的每一个html 页面,就像您必须等待'deviceready' 一样。但是,在某些情况下根本不需要它。文档让一些人感到困惑,请仔细阅读。 该文档隐藏在许多最新文档页面的底部。

相关链接

Phonegap 构建论坛:Notes for upgrading to cli-5.1.1 on PGB,现在需要白名单

Cordova Whitelist Guide Phonegap Whitelist Guide Phonegap Build Whitelist Guide

【讨论】:

设置特定版本,现在可以使用。我实现了版本 4.x 请求完整的网络访问权限,而 5.x 没有。谢谢家人。

以上是关于超时 AJAX 请求 Cordova 5的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Cordova 5.0 + cordova-android@4.0 后 Ajax 请求失败

ajax 请求上的 Cordova 升级和 jQuery 错误

Ajax请求不适用于cordova android应用程序

Phonegap Cordova Ajax 请求 404(未找到)错误

Cordova Windows 应用程序对 HTTPS 的 ajax 请求因连接失败而失败

Ajax 请求通过浏览器工作,而不是通过 iOS 或 Android 模拟器中的 Cordova 应用程序