WebView2 応用テクニック

表示しているページのCookieを取得・設定する(WebView2)

WebView2コントロールでCookieの参照・設定を行う方法です。

CoreWebView2.CookieManagerでCookie関係の操作を行えます。

GetCookiesAsyncメソッドでCookieの情報をリストで取得します。
CreateCookieメソッドでCookieを設定・更新します。

						'下記コードの動作確認はテストページ(https//web.biz-prog.net/test/testpage_cookie.html)を使っています
						Private Async Sub button4_Click(sender As Object, e As EventArgs) Handles button4.Click
					
							'すべてのCookieを取得する
							Dim cookieList = Await webView2.CoreWebView2.CookieManager.GetCookiesAsync(Nothing) 'ドメインを指定しなければnull
							For Each cookie In cookieList
								Console.WriteLine($"name={cookie.Name}, value={cookie.Value}")
							Next
					
							'ドメインを指定してCookieを取得する
							Dim cookieList2 = Await webView2.CoreWebView2.CookieManager.GetCookiesAsync("https://web.biz-prog.net") 'ドメインを指定する場合
							For Each cookie In cookieList2
								Console.WriteLine($"name={cookie.Name}, value={cookie.Value}")
							Next
					
							'今月有効期限が切れるすべてのCookieを取得する
							Dim expiredCookies = New List(Of CoreWebView2Cookie)()
							Dim cookieList3 = Await webView2.CoreWebView2.CookieManager.GetCookiesAsync(Nothing) 'ドメインを指定しなければnull
							For Each cookie In cookieList3
								If (cookie.Expires.Month = DateTime.Now.Month) Then
									expiredCookies.Add(cookie)
								End If
							Next
					
						End Sub
					
						Private Sub button5_Click(sender As Object, e As EventArgs) Handles button5.Click
					
							'Cookieの追加・更新
							Dim newCookie = webView2.CoreWebView2.CookieManager.CreateCookie("testcookie", "testvalue", "https://web.biz-prog.net", Nothing)
							newCookie.IsHttpOnly = True
							newCookie.IsSecure = True
							newCookie.Expires = DateTime.Now.AddDays(10)
							newCookie.SameSite = CoreWebView2CookieSameSiteKind.None
							webView2.CoreWebView2.CookieManager.AddOrUpdateCookie(newCookie)
					
						End Sub
					
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_cookie.html)を使っています
						private async void button4_Click(object sender, EventArgs e)
						{
							//すべてのCookieを取得する
							var cookieList = await webView2.CoreWebView2.CookieManager.GetCookiesAsync(null); //ドメインを指定しなければnull
							foreach (var cookie in cookieList)
							{
								Console.WriteLine($"name={cookie.Name}, value={cookie.Value}");
							}
				
							//ドメインを指定してCookieを取得する
							var cookieList2 = await webView2.CoreWebView2.CookieManager.GetCookiesAsync("https://web.biz-prog.net"); //ドメインを指定する場合
							foreach (var cookie in cookieList2)
							{
								Console.WriteLine($"name={cookie.Name}, value={cookie.Value}");
							}
				
							//今月有効期限が切れるすべてのCookieを取得する
							var expiredCookies = new List<CoreWebView2Cookie>();
							var cookieList3 = await webView2.CoreWebView2.CookieManager.GetCookiesAsync(null); //ドメインを指定しなければnull
							foreach (var cookie in cookieList3)
							{
								if (cookie.Expires.Month == DateTime.Now.Month)
								{
									expiredCookies.Add(cookie);
								}
							}
				
						}
				
						private void button5_Click(object sender, EventArgs e)
						{
							//Cookieの追加・更新
							var newCookie = webView2.CoreWebView2.CookieManager.CreateCookie("testcookie", "testvalue", "https://web.biz-prog.net", null);
							newCookie.IsHttpOnly = true;
							newCookie.IsSecure = true;
							newCookie.Expires = DateTime.Now.AddDays(10);
							newCookie.SameSite = CoreWebView2CookieSameSiteKind.None;
							webView2.CoreWebView2.CookieManager.AddOrUpdateCookie(newCookie);
						}
					

参考

CoreWebView2.CookieManager Property