c++ - 管理/删除工作 WebView2 的 cookie

标签 c++ winapi webview2

我正在运行 Edge WebView2,其中加载了一些登录页面。我想自动登录。

为此,我需要删除当前的 cookie。我无法通过 js 做到这一点,因为它们是 httponly 的。 对于 Edge beta 浏览器,我编写了简单的 Chrome 扩展来删除 cookie,但我无法在 WebView2 中运行扩展(或者可以?)。

我也知道 WebView2 cookies 文件所在的位置,但在 Webview 运行时我无法更改它。

在 WebView 中执行此操作的唯一方法是打开 DevTools,我在应用程序选项卡中删除了它们。

关于如何删除该 cookie 有什么想法吗?


我至少希望在 c++ 中使用自定义 header (我可以在其中指定 cookie)加载 WebView2 页面的示例。

最佳答案

更新:现在有官方 ICoreWebView2CookieManager可用于管理 cookie。 Microsoft 对该 API 的记录非常——因此最好检查他们的文档。

使用这个新的 API,只需调用 DeleteCookie要删除单个 cookie,DeleteCookies从域中删除所有 cookie,或 DeleteAllCookies清除同一配置文件下的所有 cookie。

(下面保留原答案)


WebView2 仍在积极开发中,并且还没有 cookies API —— 尽管它是 request that they are aware of .

当前推荐的清除/删除 cookie 的方法是使用 ICoreWebView2::CallDevToolsProtocolMethod 并发出 Network 命令。这也是 Microsoft 在其 sample browser application 中演示的内容。删除所有cookie。使用DevTools即使应用程序中未启用前端 UI 开发工具,API 仍然可以工作。

提供给命令的参数必须是 JSON 格式,因此如果您想使用 Network.deleteCookies 删除特定的 cookie ,您需要提供{"name":"<cookie name>;"}删除<cookie name> :

m_view->CallDevToolsProtocolMethod(L"Network.deleteCookies", L"{\"name\": \"<cookie name>\";}", nullptr);

或者您也可以使用 Network.clearBrowserCookies 删除所有 cookie :

m_view->CallDevToolsProtocolMethod(L"Network.clearBrowserCookies", L"{}", nullptr);

注意:CallDevToolsProtocolMethod异步发出的,因此如果您需要在继续之前删除 cookie,则可能需要提供处理程序参数。

关于c++ - 管理/删除工作 WebView2 的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293698/

相关文章:

c# - WebView2 网站未加载

c++ - 在渲染多个对象时,在 C++ 中使用 OpenGL 有困难

c++ - 使用 Midi 库解析事件并存储在 Vector C++ 中

c++ - 如何更改 Win32 API 应用程序中的控件主题?

c++ - 如何在 rich edit 控件中实现对 URL 的鼠标单击

c# - 为什么 WebView2 渲染一个只有 1 行文本的基本页面那么慢?

c# - 在异步任务中并行使用 WebView2

c++ - 使用对象方法作为 WinApi WndProc 回调

c++ - 如何从 C++ 中的 Qclipboard mimeData 获取剪贴板图像?

winapi - 如何初始化 LPBOOL? Kotlin Native 中的 Win32 Api