取消WebView2中对Web资源的请求

eka*_*hev 4 webview2

我正在开发一个电子邮件应用程序,我想在 WebView2 中显示邮件消息。我想让用户选择下载或不下载 Html 邮件消息中的远程资源(出于安全原因)。如何取消WebView2中请求的资源?

我尝试订阅事件 webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;

但是当调用事件处理程序时,我看不到取消请求的方法。

Pou*_*Bak 6

取消对资源的请求的方法是将参数Response的属性设置CoreWebView2WebResourceRequestedEventArgs虚拟响应

但是,在执行此操作之前,您必须调用CoreWebView2.AddWebResourceRequestedFilter以指定要触发WebResourceRequested事件的资源类型。

这是一个示例,它将过滤掉所有对图像的请求:

using Microsoft.Web.WebView2.Core;

private async void Form1_Load(object sender, EventArgs e)
{
    await webView21.EnsureCoreWebView2Async();
}

private void WebView21_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
    webView21.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
    webView21.CoreWebView2.AddWebResourceRequestedFilter(null, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.Image);
    webView21.CoreWebView2.Navigate("https://stackoverflow.com");
}

private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
        e.Response = webView21.CoreWebView2.Environment.CreateWebResourceResponse(null, 404, "Not found", null);
}
Run Code Online (Sandbox Code Playgroud)

如果您愿意,当然可以添加更多过滤逻辑。