【问题标题】:Cancel request for web resource in WebView2在 WebView2 中取消对 Web 资源的请求
【发布时间】:2021-04-15 12:22:23
【问题描述】:

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

我尝试订阅该活动 webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;

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

【问题讨论】:

  • 不要在这里和 GitHub 上问同样的问题。
  • 为什么我不能这样做?

标签: webview2


【解决方案1】:

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

然而,在你这样做之前,你必须调用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);
}

如果你愿意,当然可以和更多的过滤逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 2013-12-10
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多