Cordova Android Phonegap应用程序未连接到Internet

Cordova Android Phonegap应用程序未连接到Internet,cordova,connection,whitelist,Cordova,Connection,Whitelist,我有一个在Cordova 3.4上运行的Phonegap应用程序。Android的开发版本最近已停止连接任何服务器。我已经检查了我们的白名单,并且可以访问必要的域。我甚至尝试过将所有域都列为白名单 <access uri="*" subdomains="true" /> 但我还是没有运气。如果您对导致此问题的其他原因有任何建议,我们将不胜感激。非常感谢。A)标准材料;执行以下所有操作 添加白名单插件: $cordova插件添加cordova插件白名单 在config.xml中,

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

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

但我还是没有运气。如果您对导致此问题的其他原因有任何建议,我们将不胜感激。非常感谢。

A)标准材料;执行以下所有操作

  • 添加白名单插件:
  • $cordova插件添加cordova插件白名单

  • 在config.xml中,添加以下内容:
  • C)https和非调试模式

    如果您使用的是https,并且在您的AndroidManifest.xml中有
    android:debuggable=“false”
    ,您可以得到此问题。。。尝试使用http而不是https,看看是否是这种情况


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

    因此,经过几天的反复思考,并遵循上面的所有建议(包括将我的android平台和插件更新到新版本),我能够诊断出这个问题

    TL;博士 我的负载平衡器上的中间证书设置不正确是一个问题。一旦上传链证书,它似乎工作得很好

    长话短说:

    首先,让我解释一下我的设置——我使用HTTPS,我的应用程序托管在AWS弹性负载平衡器(ELB)后面。我正在传递一些敏感信息,因此无法在HTTP中工作,我不想使用
    android:debuggable=“true”
    来公开我的所有代码(并不是说一个坚定的攻击者找不到一种方法来解释为什么要让它变得容易?)

    为了诊断问题,我使用logcat(adb)查看应用程序运行时设备的日志。这有点棘手,但以下是我遵循的步骤,以了解这是一个问题:

    • 运行
      adb logcat-c
      清理缓冲区-使其更易于操作
    • 再次运行adb logcat,并进行搜索以查找应用程序的进程ID。我实际上是将输出定向到一个文件,并使用baretailpro查看日志并搜索我的应用程序名(反向名称空间,类似于com.companyName.appName。我假设可以使用grep。您正在查找类似以下内容的内容: I/ActivityManager(894):为activity com.companyName.appName/.MainActivity启动程序11461:com.companyName.appName/u0a110

    • 请注意,这是activity manager启动应用程序的位置。此消息包含应用程序的进程ID(上面的11461)
    • 接下来,在您的日志上进行另一次搜索,这一次是查找进程ID。我只是查看了一下它,但这里没有具体说明,因为它是一个证书问题,所以您可以查找(例如11461.*证书)。这一行告诉您有关证书问题: I/X509Util(11461):验证证书链失败,错误:java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点

    接下来,很容易通过谷歌搜索(上面的文字)发现此错误与webview不信任/无法验证您的证书有关。可以在此链接中找到解释


    现在我知道了这个问题,我可以通过将私钥、公钥和链证书上传到我的ELB:

    嗨。我仍然使用Android 3.6.4,因此无法使用白名单插件。当我更改
    Android:debugable=“true”时
    我可以连接,但在其他情况下,我无法连接到我的HTTPS服务器。知道为什么这种组合(HTTPS+
    android:debuggable=“true”
    )不起作用吗?还有其他解决方法吗(除了开始更新到较新的android等)?即使在更新到android平台4.1.1并添加白名单插件之后(和更新其他插件)仍然不起作用。请参阅添加的诊断Android SSL信任问题和缺少中间/链证书的答案。
    <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 *">    
    
    $ cordova platform rm android  
    $ cordova platform add android