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

.NET MAUI中如何为UrlWebViewSource设置自定义请求头加载WebView

在.NET MAUI WebView中携带Token Cookie跳过登录重定向

要让WebView加载首页时自动携带Token作为Cookie,跳过登录重定向,需要针对不同平台配置Cookie存储,具体步骤如下:

1. 定义平台抽象接口

先在共享项目中创建一个Cookie操作的抽象接口,用于跨平台调用:

public interface ICookieService
{
    void SetAuthCookie(string token, string homeUrl);
}

2. 实现平台特定的Cookie设置逻辑

分别在Android、iOS、Windows项目中实现上述接口,将Token写入WebView的Cookie存储:

Android平台(Droid项目)

[assembly: Dependency(typeof(CookieService))]
namespace YourAppNamespace.Droid
{
    public class CookieService : ICookieService
    {
        public void SetAuthCookie(string token, string homeUrl)
        {
            var uri = new Uri(homeUrl);
            var cookieManager = Android.Webkit.CookieManager.Instance;
            
            cookieManager.SetAcceptCookie(true);
            // 构造符合格式的Cookie字符串,确保Domain和路径正确
            var cookie = $"AuthToken={token}; path=/; domain={uri.Host}";
            cookieManager.SetCookie(uri.Host, cookie);

            // Android 11+ 需开启第三方Cookie支持(若Web应用与MAUI应用域名不同)
            if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
            {
                cookieManager.SetAcceptThirdPartyCookies(global::Android.Webkit.WebView, true);
            }
        }
    }
}

iOS平台(iOS项目)

[assembly: Dependency(typeof(CookieService))]
namespace YourAppNamespace.iOS
{
    public class CookieService : ICookieService
    {
        public void SetAuthCookie(string token, string homeUrl)
        {
            var uri = new Uri(homeUrl);
            var cookieStorage = NSHttpCookieStorage.SharedStorage;
            cookieStorage.AcceptPolicy = NSHttpCookieAcceptPolicy.Always;

            // 创建并添加Cookie
            var authCookie = new NSHttpCookie(
                "AuthToken",
                token,
                "/",
                uri.Host
            );
            
            cookieStorage.SetCookie(authCookie);
        }
    }
}

Windows平台(WinUI项目)

[assembly: Dependency(typeof(CookieService))]
namespace YourAppNamespace.WinUI
{
    public class CookieService : ICookieService
    {
        public void SetAuthCookie(string token, string homeUrl)
        {
            var uri = new Uri(homeUrl);
            var cookieManager = Windows.Web.Http.Filters.HttpBaseProtocolFilter.DefaultCookieManager;
            
            // 创建Cookie并添加到存储
            var authCookie = new Windows.Web.Http.HttpCookie(
                "AuthToken",
                uri.Host,
                "/"
            ) { Value = token };
            
            cookieManager.SetCookie(authCookie);
        }
    }
}

3. 登录后设置Cookie并加载WebView

在登录成功获取Token后,通过依赖服务获取CookieService实例,设置Cookie后再加载首页URL:

// 登录成功后获取的Token
var authToken = "your-authenticated-token";
var homeUrl = "https://your-web-app-homepage.com";

// 获取平台Cookie服务并设置Token Cookie
var cookieService = DependencyService.Get<ICookieService>();
cookieService.SetAuthCookie(authToken, homeUrl);

// 加载WebView首页
yourWebViewControl.Source = new UrlWebViewSource { Url = homeUrl };

注意事项

  • 确保Cookie的domain与首页URL的Host完全匹配,否则WebView不会携带Cookie
  • 测试前可清空WebView的缓存和Cookie,避免旧数据干扰
  • Android 11+ 若Web应用与MAUI应用域名不同,必须开启第三方Cookie支持

内容的提问来源于stack exchange,提问作者Prasanth Papareddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:05:26