Skip to content

WebView2 Cookies 示例 - Cookie 访问

概述

演示 cWebView2Host 的 Cookie 管理功能,包括简化模式(document.cookie)和完整模式(CDP Network.getCookies,含 HttpOnly Cookie)两种获取方式。

项目结构

下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]

代码请到 VBMAN2 项目 demos/webview2/cookies 目录获取。

cookies/
  ├── Form1.frm              # 主窗体,包含 Cookie 获取逻辑
  ├── Form1.frx              # 窗体布局二进制数据
  ├── vbman2_webview2.vbp    # VB6 项目文件
  └── vbman2_webview2.vbw    # VB6 工作区文件

核心代码解析

1. 声明与初始化(Form1.frm)

vb
Dim wv As New cWebView2Host

Private Sub Form_Load()
    ' 注意:WebView2 嵌入 Frame 控件而非整个 Form
    wv.Initialize Me.Frame1.hWnd, "https://vb6.pro"
End Sub

此示例将 WebView2 嵌入到 Frame 控件中,展示了 Initialize 可以接受任何窗口句柄。

vb
Private Sub Command1_Click()
    Text1.Text = wv.Cookies.GetCookies
End Sub

使用 document.cookie 解析,不包含 HttpOnly Cookie。返回简化格式的 Cookie 字符串。

vb
Private Sub Command2_Click()
    Text1.Text = wv.Cookies.GetCookiesFull
End Sub

使用 CDP Network.getCookies 获取,包含 HttpOnly Cookie。返回 JSON 格式的详细 Cookie 信息,包括 domain、path、httpOnly、secure 等字段。

功能说明

  1. 简易 Cookie 模式

    • 通过 document.cookie 获取
    • 返回可读的 Cookie 字符串
    • 不含 HttpOnly Cookie(浏览器安全限制)
  2. 完整 Cookie 模式

    • 通过 CDP Network.getCookies 获取
    • 包含 HttpOnly Cookie
    • 返回 JSON 格式,含完整 Cookie 属性
  3. Frame 控件嵌入

    • WebView2 不限于 Form,可以嵌入任何有 hWnd 的控件
    • 使用 Me.Frame1.hWnd 将浏览器嵌入 Frame 区域

技术要点

  1. HttpOnly Cookie 是设置了 HttpOnly 标志的 Cookie,JavaScript 的 document.cookie 无法读取。只有 CDP 或服务端才能访问
  2. Cookies 属性是只读的子对象,通过 wv.Cookies 访问,不直接创建
  3. GetCookiesFull 返回 JSON,可能需要 JSON 解析库提取具体字段

应用场景

  1. 调试 Web 应用的 Cookie 状态
  2. 实现自动登录(读取和设置 Cookie)
  3. 监控第三方 Cookie 和隐私合规

扩展建议

  1. 使用 CDP 的 Network.setCookieNetwork.deleteCookies 实现完整的 Cookie 管理功能
  2. 结合定时器实现 Cookie 监控,检测会话过期
  3. 使用 Cookies.GetCookiesFullAsync 异步获取,避免 UI 冻结

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