我有一个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" />
我尝试过的事情:
在Windows 10 VM上覆盖代理设置,仍然会导致出现提示
在Windows /通用凭据中为代理主机保存凭据,不走运
问题是,如何解决这种情况:
如果您有任何其他建议/解决方案,我们将非常欢迎。任何帮助都将不胜感激。
答案 0 :(得分:1)
在通过网络监视器进行进一步分析后,我可以看到流量流向了Google字体API。因此,问题在于页面标题中有一行连接到Google api以获取字体。这是在寻找互联网连接,代理会用HTTP 407
来挑战凭据。
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
注释掉此行后,该应用程序现在可以成功启动。希望它对其他人也有帮助。