WebView2 応用テクニック

レスポンスの内容を変更する(画像を読み込まない)

WebView2からのリクエストを行った際に、サーバからの画像リクエストのレスポンスを404にすることで、画像をエラー表示にする方法です。
画像の表示が不要なサイトであれば、この方法によってネットワーク速度やメモリ使用量を削減できます。

基本的なコードはレスポンスの内容を変更すると同じです。
AddWebResourceRequestedFilterに対象のフィルターとしてImageを指定します。
すると画像ファイルへアクセスされるときにCoreWebView2_WebResourceRequestedイベントが発生しますので、
ここでレスポンスとして404を返却するようにします。

サンプル

						Public Class NoImage

							Private Async Sub NoImage_Load(sender As Object, e As EventArgs) Handles MyBase.Load
						
								AddHandler wv.CoreWebView2InitializationCompleted, AddressOf CoreWebView2_InitializationCompleted
								Await InitializeAsync()
						
							End Sub
						
							Private Async Function InitializeAsync() As Task
						
								Await wv.EnsureCoreWebView2Async(Nothing)
						
							End Function
						
							Private Sub CoreWebView2_InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs)
						
								wv.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.Image)
								AddHandler wv.CoreWebView2.WebResourceRequested, AddressOf CoreWebView2_WebResourceRequested
						
							End Sub
						
							Private Sub CoreWebView2_WebResourceRequested(sender As Object, e As CoreWebView2WebResourceRequestedEventArgs)
						
								e.Response = wv.CoreWebView2.Environment.CreateWebResourceResponse(
									Nothing,
									404,
									"NOT FOUND",
									$"Content-Type: image/ png"
								)
						
							End Sub
						
							Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
						
								wv.CoreWebView2.Navigate("https://web.biz-prog.net/")
						
							End Sub
						
						End Class

					
						public partial class NoImage : Form
						{
							public NoImage()
							{
								InitializeComponent();
								//初期化完了イベントを定義
								webView2.CoreWebView2InitializationCompleted += WebView2_CoreWebView2InitializationCompleted;
							}
					
							private async void NoImage_Load(object sender, EventArgs e)
							{
								await InitializeAsync();
							}
					
							private async Task InitializeAsync()
							{
								await webView2.EnsureCoreWebView2Async(null);
							}
					
							private void WebView2_CoreWebView2InitializationCompleted(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
							{
								webView2.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.Image);
								webView2.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
							}
					
							private void CoreWebView2_WebResourceRequested(object? sender, CoreWebView2WebResourceRequestedEventArgs e)
							{
								e.Response = webView2.CoreWebView2.Environment.CreateWebResourceResponse(
									Content: null,
									StatusCode: 404,
									ReasonPhrase: "NOT FOUND",
									Headers: $"Content-Type: image/png"
								);
							}
					
							private void button1_Click(object sender, EventArgs e)
							{
								webView2.CoreWebView2.Navigate("https://web.biz-prog.net/");
							}
						}
					

参考