近期在WebView项目中出现了一个问题,部分图片显示不出来,一直裂图,多方查找资料,方确诊为http和https的混合问题。
原因
在Android5.0 以及以上的系统,当WebView加载的链接为Https开头,但是链接里面的内容,比如图片为Http链接,这时候,图片就会加载不出来,在浏览器中的Console会有如下警告log:
看日志,这个是http和https的混合问题。而且只会在Android5.0及以上的出现。那是因为从Android5.0开始,WebView默认不支持同时加载Https和Http混合模式。
分析
从Android5.0以后,当一个安全的站点(https)去加载一个非安全的站点(http)时,需要配置Webview加载内容的混合模式,一共有如下三种模式:
- MIXED_CONTENT_NEVER_ALLOW:Webview不允许一个安全的站点(https)去加载非安全的站点内容(http),比如,https网页内容的图片是http链接。强烈建议App使用这种模式,因为这样更安全。</