网络与环境配置
App 级 API 配置 WebView2 环境的 UserAgent / Proxy / userDataFolder + 运行时 clearCache。对齐 Electron session.setProxy/setUserAgent。
核心约束:UA / Proxy / userDataFolder 是 env 创建参数,运行时不可改——须在首个 createWindow(触发 ensureEnv)前调,env 建后 setXxx 返 false。
setUserAgent
cpp
App::instance().setUserAgent(L"MyApp/1.0 (Windows)");自定义 HTTP User-Agent(所有窗口共享)。走 Chromium command-line(--user-agent=,经 put_AdditionalBrowserArguments 注入)。env 建后无效。
setProxy
cpp
App::instance().setProxy(L"proxy.host:8080");走 --proxy-server= command-line。Chromium 格式:
| 值 | 语义 |
|---|---|
host:port | 全协议经此代理 |
http=host:8080;https=host:8080 | 按协议 |
direct:// | 直连,禁系统代理 |
setUserDataFolder
cpp
App::instance().setUserDataFolder(L"E:\\myapp-data");cache + cookies + localStorage 总目录(env param2)。默认 %LOCALAPPDATA%\<exe>.WebView2。便携版可指向 exe 同目录或 getPath('userData')。
clearCache
cpp
App::instance().clearCache(); // 任意时,async走 DevTools Protocol Network.clearBrowserCache(Window::callDevToolsAsync),浏览器级(清整个 env 的网络 cache),不重启进程。
时序
App::instance()
├ setUserAgent/setProxy/setUserDataFolder ← 须 createWindow 前(env 建后返 false)
├ createWindow → ensureEnv ← 读上述建 env(command-line + userData param)
├ clearCache ← 任意时
└ run实现细节
- SDK 1.0.2903 无 env 级
put_UserAgent/put_ProxyServer,故 UA+Proxy 走ICoreWebView2EnvironmentOptions::put_AdditionalBrowserArguments(Chromium command-line)。 userDataFolder是CreateCoreWebView2EnvironmentWithOptions第二参。clearCache用CallDevToolsProtocolMethod(sync 发起 + handler 回调,fire-and-forget)。