You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 MAUI WebView中JavaScript Cookie访问被拒绝?求解决方案

让MAUI WebView允许JavaScript直接读写Cookie的解决方案

针对.NET 8 MAUI的Windows 10.0.22621和Android 14平台,要让WebView加载的本地HTML页面直接通过JavaScript读写Cookie,需分平台配置:

Windows平台(WebView2)

Windows端WebView基于WebView2控件,需确保启用Cookie并配置本地资源的Cookie权限:

  1. 在WebView的Loaded事件中获取WebView2实例,配置CoreWebView2的Cookie相关设置:
private async void WebView_Loaded(object sender, EventArgs e)
{
    if (sender is WebView webView)
    {
#if WINDOWS
        var webView2 = webView.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2;
        if (webView2 != null)
        {
            // 等待WebView2初始化完成
            await webView2.EnsureCoreWebView2Async();
            
            // 启用Cookie及脚本支持
            webView2.CoreWebView2.Settings.AreCookiesEnabled = true;
            webView2.CoreWebView2.Settings.IsScriptEnabled = true;
            
            // 允许本地MAUI资源URI(ms-appx-web://)使用Cookie
            await webView2.CoreWebView2.CookieManager.SetCookieAsync("ms-appx-web:///", "path=/");
        }
#endif
    }
}
  1. 确保WebView的Source使用正确的本地资源URI格式:
webView.Source = new UrlWebViewSource { Url = "ms-appx-web:///Assets/your-html-file.html" };

Android平台

Android端需配置WebView的WebSettings和CookieManager,开放Cookie读写权限:

  1. 在MainActivity.cs中通过WebViewHandler统一配置:
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping("EnableCookieSupport", (handler, view) =>
    {
#if ANDROID
        var androidWebView = handler.PlatformView as Android.Webkit.WebView;
        if (androidWebView != null)
        {
            var webSettings = androidWebView.Settings;
            // 启用JavaScript和DOM存储
            webSettings.JavaScriptEnabled = true;
            webSettings.DomStorageEnabled = true;
            // 允许本地资源访问
            webSettings.AllowFileAccess = true;
            webSettings.AllowContentAccess = true;
            
            // 启用Cookie支持
            Android.Webkit.CookieManager.Instance.SetAcceptCookie(true);
            // Android 12+需额外允许第三方Cookie(适配本地页面场景)
            if (Build.VERSION.SdkInt >= BuildVersionCodes.Tiramisu)
            {
                Android.Webkit.CookieManager.Instance.SetAcceptThirdPartyCookies(androidWebView, true);
            }
        }
#endif
    });
}
  1. WebView的Source使用Android本地资源URI格式:
webView.Source = new UrlWebViewSource { Url = "file:///android_asset/your-html-file.html" };

通用配置

在XAML或代码中确保WebView启用JavaScript:

<WebView IsJavaScriptEnabled="True" Loaded="WebView_Loaded" />

配置完成后,HTML页面中的JavaScript代码即可直接使用document.cookie进行读写操作,无需通过C#后台中转。

内容的提问来源于stack exchange,提问作者Hưng Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:25:12