亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 7.0系統(tǒng)webview 顯示https頁面空白處理方法

 更新時(shí)間:2018年07月31日 16:06:55   作者:danyan_li  
今天小編就為大家分享一篇Android 7.0系統(tǒng)webview 顯示https頁面空白處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

最近開發(fā)的時(shí)候,偶爾遇到在線上穩(wěn)定運(yùn)行的webview內(nèi)嵌的h5頁面加載不出來,一直定位不到具體原因(因?yàn)槲覀冏约鹤龅募嫒菪詼y(cè)試上不重現(xiàn)),看系統(tǒng)日志也沒有發(fā)現(xiàn)什么問題,后來咨詢了用戶手機(jī)的型號(hào),發(fā)現(xiàn)是7.0或者6.0以上的個(gè)別機(jī)型會(huì)出現(xiàn)。

后來借到了一臺(tái)業(yè)務(wù)的手機(jī),型號(hào)是:三星 S6 EDGE,SM-G9205,在大多數(shù)機(jī)型上運(yùn)行正常的頁面,在這個(gè)機(jī)器上如下圖:

這個(gè)頁面在近期的變更是從http切換到https,由于之前的頁面是http,我們?cè)谇袚Q的時(shí)候,除了url之外,并未對(duì)webview的ssl校驗(yàn)做特殊的處理。

問題就出在這里,webview在加載https的時(shí)候,通常會(huì)用手機(jī)根證書對(duì)h5的頁面進(jìn)行校驗(yàn),這個(gè)校驗(yàn)不一定成功。

失敗的時(shí)候會(huì)回調(diào)webviewclient的onReceivedSslError函數(shù)。

既然如此,我們可以在證書校驗(yàn)失敗的情況下,將其跳過,繼續(xù)加載就可以了,如下:

  public void onReceivedSslError(WebView view, android.webkit.SslErrorHandler handler, android.net.http.SslError error) {
  	
   handler.proceed();//這里校驗(yàn)失敗的時(shí)候放過
   
  };

重新運(yùn)行后發(fā)現(xiàn),這個(gè)方法是可行的,他在ssl校驗(yàn)失敗的時(shí)候繞過了這個(gè)步驟。

但是問題又來了,我們切換https,本來就是希望利用ssl這一層,保證加載頁面的安全性,現(xiàn)在統(tǒng)一跳過,不是達(dá)不到安全的初衷了嗎。

繼續(xù)調(diào)試,我們將 onReceivedSslError這里面的SslError信息打出來,發(fā)現(xiàn)是下面的錯(cuò)誤:

SslError.SSL_INVALID//校驗(yàn)過程遇到了bug

這個(gè)錯(cuò)誤是webviewclient在校驗(yàn)ssl的過程中,出現(xiàn)了bug。

查閱源碼后發(fā)現(xiàn),全量的錯(cuò)誤一共有如下幾類:

其中有的是證書本身有問題,有的是校驗(yàn)出了bug,因此全部放過雖然是最便捷的,但可能不是最好的。

最后我判斷,在ssl校驗(yàn)失敗的情況下,如果是校驗(yàn)過程遇到了bug,那就放過,其他情況就cancel:

  	if(error.getPrimaryError() == android.net.http.SslError.SSL_INVALID ){// 校驗(yàn)過程遇到了bug
		  	handler.proceed();
		  }else{
		  	handler.cancel();
	  }

以上這篇Android 7.0系統(tǒng)webview 顯示https頁面空白處理方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論