WebView2 IgnoreHttpsError 示例 - 忽略 HTTPS 证书错误
概述
演示如何在 cWebView2Host 中忽略 HTTPS 证书错误,适用于访问使用自签名证书的内部站点。
项目结构
下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]
代码请到 VBMAN2 项目 demos/webview2/ignoreHttpsError 目录获取。
ignoreHttpsError/
├── Form1.frm # 主窗体,包含证书错误绕过配置
├── vbman2_webview2.vbp # VB6 项目文件
└── vbman2_webview2.vbw # VB6 工作区文件核心代码解析
1. 声明与初始化(Form1.frm)
vb
Dim WithEvents wv As cWebView2Host
Private Sub Form_Load()
Set wv = New cWebView2Host
wv.Initialize Me.hWnd, "https://cad.vb6.pro/" ' 自签名证书站点
End Sub使用 WithEvents 以接收 Create 事件。目标 URL 是一个使用自签名证书的站点。
2. 在 Create 事件中配置安全选项
vb
Private Sub wv_Create()
wv.Security.CertificateErrorAction = CEA_AlwaysAllow
End Sub关键:安全选项必须在 wv_Create 事件中设置,此时 WebView2 已创建但导航尚未真正开始。
功能说明
证书错误绕过
CEA_AlwaysAllow枚举值始终允许证书错误- 内部注入
--ignore-certificate-errors到浏览器命令行参数 - 必须在导航开始前设置
三阶段初始化模式
Initialize(hWnd, url)→ 创建 WebView2wv_Create()→ 配置安全选项- 自动导航 → 页面正常加载
为什么不在 Form_Load 中设置
- Initialize 开始异步创建 WebView2 环境
- Security 设置需要在环境创建完成后、导航开始前生效
wv_Create正是这个时间窗口
技术要点
CEA_AlwaysAllow 的实现原理:cWebView2Host 通过向
AdditionalBrowserArguments注入--ignore-certificate-errorsChrome 命令行开关来实现。这是最可靠的方式,因为 CDP 的Security.setOverrideCertificateErrors在 WebView2 中不可靠设置时机:必须在
wv_Create事件中设置。如果在此之后设置,当前导航无法受影响全局生效:此设置影响所有后续导航,不仅仅是初始 URL
安全警告:生产环境应谨慎使用此功能,仅在受信网络中使用
应用场景
- 内部开发环境使用自签名证书
- 测试环境证书未正确配置
- 企业内网使用私有 CA
- 调试 HTTPS 相关问题
扩展建议
- 可以通过条件判断只为特定域名启用证书绕过
- 生产环境应使用合法证书而非绕过验证
- 未来 ICoreWebView2_14 接口可能支持更深度的证书控制