如何使用 CoreWebView2CookieManager 在 WebView2 控件上设置 cookie

问题描述

提前致谢。

我正在尝试使用 CoreWebView2CookieManager(来自 WebView2 最新 SDK 1.0.705.50 的 CookieManagement API)在基于 WPF 的 WebView2 浏览器控件上设置 cookie,但未在浏览器上设置 cookie。

这是我在 WPF 应用程序中的一段代码

private void ButtonNavigatetoLocal(object sender,RoutedEventArgs e)
{
   string uri = @"http://www.dnndev.me/";
   var cookie = _webView.CoreWebView2.CookieManager.CreateCookie("TestCookie","XJKDKD",".me",null);
   cookie.IsHttpOnly = true;
   cookie.IsSecure = true;                
  _webView.CoreWebView2.CookieManager.AddOrUpdateCookie(cookie);           
  _webView.CoreWebView2.Navigate(uri);

}

只是想知道我在这里是否遗漏了什么?我还需要使用 WebResourceRequested 事件来设置 cookie 吗?任何线索或示例将不胜感激。

解决方法

问题在于您将 cookie 域设置为顶级域 .me。这是不合法的,出于安全原因,浏览器不会发送它。

想象一下,如果您将其设置为 .com,那么它会将 cookie 发送到半个世界。所以这是被禁止的。

而是将其设置为 .dnndev.me - 然后它将被发送到您的域。

您还设置了:cookie.IsSecure = true; - 那么它只会发送到 https 请求。将其设置为 false 以包含 http 请求。

同时将 path 设置为 / - 然后它将被发送到您服务器上的所有路径。