Skip to content

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 已创建但导航尚未真正开始。

功能说明

  1. 证书错误绕过

    • CEA_AlwaysAllow 枚举值始终允许证书错误
    • 内部注入 --ignore-certificate-errors 到浏览器命令行参数
    • 必须在导航开始前设置
  2. 三阶段初始化模式

    • Initialize(hWnd, url) → 创建 WebView2
    • wv_Create() → 配置安全选项
    • 自动导航 → 页面正常加载
  3. 为什么不在 Form_Load 中设置

    • Initialize 开始异步创建 WebView2 环境
    • Security 设置需要在环境创建完成后、导航开始前生效
    • wv_Create 正是这个时间窗口

技术要点

  1. CEA_AlwaysAllow 的实现原理:cWebView2Host 通过向 AdditionalBrowserArguments 注入 --ignore-certificate-errors Chrome 命令行开关来实现。这是最可靠的方式,因为 CDP 的 Security.setOverrideCertificateErrors 在 WebView2 中不可靠

  2. 设置时机:必须在 wv_Create 事件中设置。如果在此之后设置,当前导航无法受影响

  3. 全局生效:此设置影响所有后续导航,不仅仅是初始 URL

  4. 安全警告:生产环境应谨慎使用此功能,仅在受信网络中使用

应用场景

  1. 内部开发环境使用自签名证书
  2. 测试环境证书未正确配置
  3. 企业内网使用私有 CA
  4. 调试 HTTPS 相关问题

扩展建议

  1. 可以通过条件判断只为特定域名启用证书绕过
  2. 生产环境应使用合法证书而非绕过验证
  3. 未来 ICoreWebView2_14 接口可能支持更深度的证书控制

VB6及其LOGO版权为微软公司所有