WebView2:是否可以防止存储响应中的 cookie

问题描述

我正在使用 WebView2 并希望在响应第三方资源请求时停止存储 cookie。

WebView2 公开了最初看起来很有希望的 CoreWebView2.WebResourceResponseReceived 事件。但是,文档指出:

无法保证 WebView 处理响应和主机应用程序的处理程序运行的顺序。应用的处理程序不会阻止 WebView 处理响应。

因此,无法在此事件处理程序中修改响应或删除 cookie。我想您可以记录响应并“稍后”将其删除,但这似乎很难可靠地执行。

在使用 WebView2 时,有没有办法阻止或可靠地删除响应中收到的 cookie?

解决方法

目前无法拦截和修改网络响应。

我想作为一种解决方法,您可能会尝试像您建议的那样稍后异步运行一些代码,例如在相应的 NavigationCompleted 事件期间使用 CoreWebView2.CookieManager API 删除 cookie。

另一种解决方法可能是使用 WebResourceRequested 事件拦截请求,使用事件参数上的 GetDeferral 方法来获得延迟,而您自己在本机代码中执行 Web 请求,在本机代码中接收响应,将响应修改为您喜欢,然后在 WebResourceRequested eventargs 中提供修改后的响应并完成延迟。但是,这有一个缺点,即您需要在您使用的任何 HTTP 堆栈的请求和响应对象之间来回转换 WebView2 的 Web 资源请求和响应对象。

否则,您可以在 WebView2 Feedback github project 上将您的反馈作为功能请求提交。