我在Cordova 3.4上运行了一个Phonegap应用程序。 Android的开发版本最近已停止连接到任何服务器。我检查了我们的白名单,并且可以访问必要的域名。我甚至尝试将所有域名列入白名单
<access uri="*" subdomains="true" />
但我仍然没有运气。任何有关此问题的其他原因的建议将不胜感激。非常感谢。
答案 0 :(得分:1)
A)标准的东西;执行以下所有操作
$ cordova插件添加cordova-plugin-whitelist
<access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-navigation href="http://*/*" /> <allow-navigation href="https://*/*" />
<meta http-equiv="Content-Security-Policy" content="default-src *; script-src * 'unsafe-eval' 'unsafe-inline'; connect-src *; img-src *; style-src * 'unsafe-inline' ; media-src *">
B)也许这也是
如果你的应用程序此时仍未连接到Android设备上的互联网,我建议删除并重新添加Android平台:
$ cordova platform rm android $ cordova platform add android
C)https和非调试模式
如果您使用的是https,并且 AndroidManifest.xml 中有android:debuggable="false"
,则可以解决此问题...尝试使用http而不是https来查看是否是这种情况
我希望有所帮助 - 祝你好运!
答案 1 :(得分:0)
所以,经过几天的讨论并按照上面的所有建议(包括将我的android平台和插件更新到更新的版本)之后,我能够诊断出这个问题。
<强> TL; DR; 强> 在我的负载均衡器上未正确设置中间证书是一个问题。上传链证书后,它似乎运作良好。
长篇故事:
首先,让我解释一下我的设置 - 我在HTTPS工作,我的应用程序托管在AWS Elastic Load Balancer(ELB)之后。我传递了一些敏感信息,因此我无法在HTTP中工作,而且我不想使用android:debuggable="true"
来暴露我的所有代码(并不是一个坚定的攻击者赢了也没找到方法为什么要这样做容易吗?)。
要诊断问题,我使用logcat(adb)在应用程序运行时查看设备的日志。这有点棘手但是我遵循以下步骤来确定这是问题所在:
adb logcat -c
来清理缓冲区 - 使其更容易理解adb logcat
并进行搜索以查找应用程序的进程ID。我实际上是将输出定向到文件并使用baretailpro查看日志并搜索我的应用程序名称(反向命名空间,类似于 com.companyName.appName 。我假设可以使用grep。你是寻找以下内容:
I / ActivityManager(894):为活动com.companyName.appName / .MainActivity
启动proc 11461 : com.companyName.appName / u0a110
I / X509Util(11461):无法验证证书链,错误:java.security.cert.CertPathValidatorException:未找到证书路径的信任锚。
之后,很容易谷歌(上面的文字)并发现此错误与webview不相信/能够验证您的证书。可以在此链接android SSL - certificate not trusted中找到解释。