2014-10-11 65 views
2

我有一个在Cordova 3.4上运行的Phonegap应用程序。 Android的开发版本最近停止连接到任何服务器。我检查了我们的白名单,并且必要的域名可以访问。我甚至尝试将所有域名列入白名单Android Phonegap应用程序未连接到Internet

<access uri="*" subdomains="true" /> 

但我仍然没有运气。对于这个问题的其他原因的任何建议将不胜感激。非常感谢。

回答

1

A)Standard stuff;做以下所有

  1. 添加白名单插件:

$ cordova plugin add cordova-plugin-whitelist

  • 在你config.xml中,添加以下内容:
  • <access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-navigation href="http://*/*" /> 
    <allow-navigation href="https://*/*" /> 
    
    1. add a Content Security Policy的index.html,这样的事情:
    <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来看看这个是这样的。

    我希望有帮助 - 祝你好运!

    +0

    喜:

    现在我知道这个问题,我可以简单地通过上传私钥,公钥和链证书到我的ELB修复它。我仍然使用Android 3.6.4,因此无法使用白名单插件。当我更改'android:debuggable =“true”'我可以连接,否则,我无法连接到我的HTTPS服务器。任何想法为什么这个组合(HTTPS +'android:debuggable =“true”')不工作?任何其他解决方法(除了开始更新到更新的Android等)? – 2016-03-20 12:10:24

    +0

    即使更新到android平台4.1.1并添加白名单插件(并更新其他插件),仍然无法正常工作。查看添加的诊断Android SSL信任问题和丢失的中间/链证书的答案。 – 2016-03-21 15:34:19

    0

    因此,在将我的头撞过这几天并遵循上述所有建议(包括更新我的android平台和插件到新版本)之后,我能够诊断出这个问题。

    TL; DR; 这是在我的负载均衡器上没有正确设置中间证书的问题。一旦上传链式证书,它似乎运作良好。

    长的故事:

    首先,让我解释一下我的设置 - 我在HTTPS工作和我的应用程序背后AWS弹性负载均衡(ELB)主办。我传递了一些敏感信息,所以我无法在HTTP中工作,而且我也不想使用公开所有代码的android:debuggable="true"(并非确定的攻击者无法通过简单的方法找到方法?)。

    为了诊断问题,我正在使用logcat(adb)在应用程序运行时查看设备的日志。这是一个有点棘手,但这里有我也跟着看,这是问题的步骤:

    • 运行adb logcat -c清洁缓冲区 - 使得它更容易再次按照
    • 运行adb logcat并进行搜索,找到应用程序的进程ID。我实际上是指导输出到一个文件,并使用baretailpro查看日志和搜索我的应用程序名称(反向命名空间,如com.companyname.appName。我认为可以使用grep。您正在寻找像如下:

      I/ActivityManager( 894): Start proc 11461:com.companyName.appName/u0a110 for activity com.companyName.appName/.MainActivity

    • 注意,这是其中活动管理启动您的应用程序消息中包含应用程序的进程ID(11461以上)
    • 下一个,做你的日志另一个搜索,这时候找进程ID,我只是将目光转向了其他方面,因为这是一个证书问题,您可以查找(例如11461. * cert)。这是告诉您关于证书问题的线路:

      I/X509Util(11461): Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

    在此之后,很容易给谷歌它(与上面的文字),并发现这个错误与web视图不信任/能够验证您的证书做。解释可以在这个链接找到android SSL - certificate not trustedCreate ELB certificate with Chain

    相关问题