在 WebView2 中取消对 Web 资源的请求
Cancel request for web resource in WebView2
我正在开发一个电子邮件应用程序,我想在 WebView2 中显示邮件消息。我想让用户选择是否下载 Html 邮件中的远程资源(出于安全原因)。如何在 WebView2 中取消请求的资源?
我尝试订阅该活动
webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
但是当调用事件处理程序时,我没有看到取消请求的方法。
取消对资源的请求的方法是将 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://whosebug.com");
}
private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
e.Response = webView21.CoreWebView2.Environment.CreateWebResourceResponse(null, 404, "Not found", null);
}
如果愿意,您当然可以使用更多过滤逻辑。
我正在开发一个电子邮件应用程序,我想在 WebView2 中显示邮件消息。我想让用户选择是否下载 Html 邮件中的远程资源(出于安全原因)。如何在 WebView2 中取消请求的资源?
我尝试订阅该活动 webView.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
但是当调用事件处理程序时,我没有看到取消请求的方法。
取消对资源的请求的方法是将 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://whosebug.com");
}
private void CoreWebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
e.Response = webView21.CoreWebView2.Environment.CreateWebResourceResponse(null, 404, "Not found", null);
}
如果愿意,您当然可以使用更多过滤逻辑。