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