webview(wex5/ionic/android原生)+https页面显示空白异常记录

google浏览器跨域后显示的正常界面:

webview(wex5/ionic/android原生)+https页面显示空白异常记录

手机上显示的空白界面:

webview(wex5/ionic/android原生)+https页面显示空白异常记录

通过编译后的源码,最初定位到了SystemWebViewClient这个类中的onReceivedSslError方法,认为是webview访问https未添加SSL支持导致的,因为onReceivedSslError方法继承super.onReceivedSslError(view, handler, error),默认执行handler.cancel()方法,改为handler.proceed()忽略SSL证书错误,继续加载页面,发现并没有卵用。。。继续探索,大部分项目可能在这里更改下就支持了,项目编译后找到编译后的生成android平台,在as中跑起来,debug调试找到如下异常:

webview(wex5/ionic/android原生)+https页面显示空白异常记录

This request has been blocked; the content must be served over HTTPS.

问题清晰了,我的页面部署在服务器上是 https 路径,而这个页面请求地图服务中中包含了大量的 http 资源(主要是图片),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求,然后https请求并不能加载出地图服务器的这些图片来。要么将资源都改成https请求,要么服务器映射成http。