Windows 10的Cordova应用在启动时在代理后面启动时停留在启动画面上

时间:2019-12-16 05:58:15

标签: cordova uwp proxy crash

我有一个Cordova应用程序,可以在连接到互联网的多个设备上正常工作。

观察到的行为:

但是,当我在开发环境VM上部署应用程序时,它只是冻结在初始屏幕上。我注意到的一件奇怪的事是,每次启动浏览器时,它都会要求我登录到代理服务器。这是因为代理使用我的生产凭据进行身份验证。凭据保存在浏览器中,我只需要单击“确定”。我觉得该应用无法启动,因为网络视图正在等待代理登录提示被执行,这在启动时显然是不可见的。该应用程序一直坐在那里直到关闭。

此外,当我使用VS2017在调试模式下运行应用程序时,index.html文件仅加载了head标签,没有正文标签

所有库和脚本都在head选项卡中本地引用,因为该应用程序也可以脱机工作。下面的头部示例。

配置:

index.html

    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
    <link rel="stylesheet" href="css/jquery-ui.css">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="scripts/datepicker/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" href="scripts/daterangepicker/daterangepicker.css">
    <link rel="stylesheet" href="scripts/timepicker/bootstrap-timepicker.min.css">
    <link rel="stylesheet" href="scripts/easyautocomplete/easy-autocomplete.css">
    <link href="scripts/growl/jquery.growl.css" rel="stylesheet" type="text/css" />
    <link href="scripts/jquery-confirm/jquery-confirm.min.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="css/SHMOStyles.css" />
    <link rel="stylesheet" href="css/ripple.min.css">
    <script type="text/javascript" src="scripts/jquery-2.2.3.min.js"></script>
    <script type="text/javascript" src="scripts/jquery-ui.min.js"></script>
    <script type="text/javascript" src="scripts/bootstrap.min.js"></script>
    <script type="text/javascript" src="scripts/fastclick.js"></script>
    <script type="text/javascript" src="mapapi.js"></script>
    <script type="text/javascript" src="scripts/index.js"></script>
    <script type="text/javascript" src="scripts/jquery.dataTables.min.js"></script>
    <script type="text/javascript" src="scripts/dataTables.bootstrap.min.js"></script>
    <script type="text/javascript" src="scripts/hammer.min.js"></script>

我在config.xml中使用了一些插件,但是当我在生产环境或直接连接到互联网的任何设备上运行它们时,它们中的任何一个都没有问题。在生产环境中,它使用相同的凭据来进行计算机登录和代理,因此无法像在Dev env中一样获得登录提示。

config.xml

<vs:platformSpecificValues>
    <vs:platformSpecificWidget platformName="windows" id="SIMSMobileV0" />
  </vs:platformSpecificValues>
  <plugin name="cordova-plugin-fastclick" spec="~1.0.0" />
  <plugin name="cordova-plugin-file-opener2" spec="~2.0.19" />
  <plugin name="cordova-sqlite-storage" spec="~2.3.1" />
  <plugin name="cordova-plugin-camera" spec="~2.4.1" />
  <plugin name="cordova-plugin-device" spec="~2.0.2" />
  <plugin name="cordova-plugin-network-information" spec="~2.0.1" />
  <plugin name="cordova-plugin-splashscreen" spec="~5.0.2" />
  <plugin name="cordova-plugin-file" spec="~6.0.1" />
  <plugin name="cordova-plugin-zeep" spec="~0.0.4" />
  <plugin name="cordova-plugin-file" spec="~6.0.1" />
  <plugin name="cordova-plugin-geolocation" spec="~4.0.1" />
  <plugin name="cordova-plugin-insomnia" spec="~4.3.0" />

我尝试过的事情:

  1. 在Windows 10 VM上覆盖代理设置,仍然会导致出现提示

  2. 在Windows /通用凭据中为代理主机保存凭据,不走运

  3. 将代理配置添加到了npm,git,gradle等。

问题是,如何解决这种情况:

  1. 代理登录提示出现在应用程序中吗?我做了一些研究,似乎cordova应用程序不支持此功能。但是,渴望看到是否可以做到。
  2. 如果未检测到连接,请向应用添加模块以管理此行为
  3. 以某种方式在不安装任何软件或不连接VPN的情况下全局设置持久代理

如果您有任何其他建议/解决方案,我们将非常欢迎。任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在通过网络监视器进行进一步分析后,我可以看到流量流向了Google字体API。因此,问题在于页面标题中有一行连接到Google api以获取字体。这是在寻找互联网连接,代理会用HTTP 407来挑战凭据。

    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">

注释掉此行后,该应用程序现在可以成功启动。希望它对其他人也有帮助。