Cef 因系統時間不正常,導致頁面訪問空白問題


當我們的系統時間不正常,比如設置一個日期-1999年9月9日,會引發證書問題。

系統時間不正常-IE有概率能訪問

觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE

-- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常

系統時間不正常-Cef完全無法訪問

1.使用Cef-Demo,異常顯示如下:

2.ChromiumWebBrowser控件,此類異常也會觸發LoadError事件

異常Code是CefErrorCode.Aborted,文件下載取消等異常信息也是Aborted類型,所以無法判斷當前異常是否證書相關異常。

那么有沒有Cef瀏覽器有沒有其它相關異常事件,可以准確獲知相關證書異常呢?

Cef系統時間不正常的修復方案

Cef有請求委托RequestHandler對象,可以在本地定制相關實現

_cefBrowser.RequestHandler = new ChromeBrowserRequestHandler();

新建ChromeBrowserRequestHandler,繼承默認RequestHandler,把相關事件暴露給外界調用

 1     public class ChromeBrowserRequestHandler : DefaultRequestHandler
 2     {
 3         /// <summary>
 4         /// 證書異常
 5         /// 有很多種,比如系統時間不正確引發證書異常 CertDateInvalid
 6         /// </summary>
 7         public event EventHandler<(string url, CefErrorCode errorCode)> CertificateError;
 8         public override bool OnCertificateError(
 9           IWebBrowser browserControl,
10           CefSharp.IBrowser browser,
11           CefErrorCode errorCode,
12           string requestUrl,
13           ISslInfo sslInfo,
14           IRequestCallback callback)
15         {
16             callback.Dispose();
17             //證書異常
18             CertificateError?.Invoke(this,(requestUrl,errorCode));
19             return false;
20         }
21     }

獲取到證書異常的觸發時機,如何解決系統時間不正常?

詳見我的博客:C# 同步更新系統時間

注:更新系統時間,需要管理員權限。相關app.manifest添加設置 ,見:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM