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,把相关事件暴露给外界调用
public class ChromeBrowserRequestHandler : DefaultRequestHandler
{
/// <summary>
/// 证书异常
/// 有很多种,比如系统时间不正确引发证书异常 CertDateInvalid
/// </summary>
public event EventHandler<(string url, CefErrorCode errorCode)> CertificateError;
public override bool OnCertificateError(
IWebBrowser browserControl,
CefSharp.IBrowser browser,
CefErrorCode errorCode,
string requestUrl,
ISslInfo sslInfo,
IRequestCallback callback)
{
callback.Dispose();
//证书异常
CertificateError?.Invoke(this,(requestUrl,errorCode));
return false;
}
}
获取到证书异常的触发时机,如何解决系统时间不正常?
详见我的博客:C# 同步更新系统时间
注:更新系统时间,需要管理员权限。相关app.manifest添加设置 ,见:
Cef 因系统时间不正常,导致页面访问空白问题的更多相关文章
- 导致页面顶部空白一行解决方法 【】
2016年11月7日10:57:10 模板文件生成html文件之后会在body开头处加入一个可见的控制符,导致页面头部会出现一个空白行.原因是页面的编码是UTF-8 + BOM. ...
- 导致页面顶部空白一行解决方法
模板文件生成html文件之后会在body开头处加入一个可见的控制符,导致页面头部会出现一个空白行.原因是页面的编码是UTF-8 + BOM. 这种编码方式一般会在windows操 ...
-  导致页面顶部空白一行
模板文件生成html文件以后会在页面body开头处生成可见的控制符 导致页面头部出现一个空白行,导致这样的原因就是页面的编码格式是UTF-8 + BOM 解决方法,最简单的就是使用编辑器重新保存文件 ...
- jsp页面中,动态调用系统时间的实现
在做WEB项目时,经常会须要 在页面中显示当前时间,以下介绍一个简单的调用系统时间的方法,效果如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczI5 ...
- C/C++ 修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析
修改系统时间,导致sem_timedwait 一直阻塞的问题解决和分析 介绍 最近修复项目问题时,发现当系统时间往前修改后,会导致sem_timedwait函数一直阻塞.通过搜索了发现int sem_ ...
- jsp页面动态获取系统时间
最近在做练习时碰到了这样一个问题:"读者选择查询图书相应信息,跳转到书目的详细信息界面,当可借阅数量大于零,点击借阅按钮,提示用户借阅成功,并显示归还日期(三个月),否则提示用户该书可借阅数 ...
- KingbaseES V8R3 由于修改系统时间导致sys_rman备份故障案例
案例说明: 此案例,为复现"current time may be rewound"错误.对于数据库环境,在使用前必须保证系统时间的正确性.如果数据库创建后,再将系统时间修改为 ...
- [双系统linux] ----双系统切换导致系统时间错误
安装了linux双系统以后,发现每次双系统切换以后系统时间总会错误. 原因:Linux和win7(win10)双系统时间错误问题 时间相差8小时 MAC/linux 将系统硬件时间看待为UTC, 即U ...
- 如何在jsp页面获取系统时间
<%@ page import="java.util.*"%> //获取系统时间必须导入的 <%@ page import="java.text.*&q ...
随机推荐
- CVE-2019-0708(非蓝屏poc)远程桌面代码执行漏洞复现
玩了几天 刚回成都 玩电脑复现一下~ 内核漏洞原理暂时 没看懂 别问 ,问就是不懂 0x01 复现环境和Exp准备 漏洞影响范围 Windows 7 Windows Server 2008 R2 W ...
- API 网关的选型和持续集成
2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了< API 网关的选 ...
- selenium-模块概述(1)
Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 1.目录结构如下: D:\soft\python36\Lib\site-pa ...
- python编程系列---tcp服务端的简单实现
流程如下: """tcp服务端创建流程1. 创建服务端的tcp socket : server_socket 用于监听客户端的请求2. 绑定端口3. server_soc ...
- C#+Selenium抓取百度搜索结果前100网址
需求 爬取百度搜索某个关键字对应的前一百个网址. 实现方式 VS2017 + Chrome .NET Framework + C# + Selenium(浏览器自动化测试框架) 环境准备 创建控制台应 ...
- 在已有 Windows10 系统的基础上,安装 Ubuntu17.10 系统(新版 BIOS)
1.第一步,下载Ubuntu系统镜像 2.第二步,制作启动U盘,使用UltralSO,步骤:打开文件——选择iso文件——启动——写入硬盘映像——选择U盘——写入 3.第三步,分区,在Windows徽 ...
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- Spring 事务笔记
代码写着写着就钻进源码了. 概念 InfrastructureProxy 结构代理 百度查了查,这个类还没有解释. 进去看了一下: Interface to be implemented by tra ...
- django-URL之从URL中获取关键字(七)
主要用于查询操作. 主要目录 book/views.py from django.http import HttpResponse from django.shortcuts import rende ...
- Python+Keras+TensorFlow车牌识别
这个是我使用的车牌识别开源项目的地址:https://github.com/zeusees/HyperLPR Python 依赖 Anaconda for Python 3.x on Win64 Ke ...