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); }