Xamarin Android CookieManager没有';不要储存所有的饼干

Xamarin Android CookieManager没有';不要储存所有的饼干,android,xamarin,cookies,xamarin.android,android-cookiemanager,Android,Xamarin,Cookies,Xamarin.android,Android Cookiemanager,我在我的Xamarin项目中使用Android Web View来执行第三方身份验证。登录成功后,我需要提取身份验证cookies。我将这些cookie存储在持久性存储中,然后使用它们传递给后续请求。 例如: Android应用程序>(打开)webview>加载(idp提供商)url>用户提供凭据并将saml请求发送到我的后端服务器>后端服务器验证saml并返回身份验证cookies。 它返回两个饼干 现在一切正常。在webview的WebClient的OnPageFinished方法中,我试图

我在我的Xamarin项目中使用Android Web View来执行第三方身份验证。登录成功后,我需要提取身份验证cookies。我将这些cookie存储在持久性存储中,然后使用它们传递给后续请求。 例如:

Android应用程序>(打开)webview>加载(idp提供商)url>用户提供凭据并将saml请求发送到我的后端服务器>后端服务器验证saml并返回身份验证cookies。

它返回两个饼干

现在一切正常。在webview的WebClient的OnPageFinished方法中,我试图使用该方法提取cookie

public override void OnPageFinished(WebView view, string url)
    {
        base.OnPageFinished(view, url);
        var handler = OnPageCompleted;
        var uri = new Uri(url);
        AllowCookies(view);
        var cookies = CookieManager.Instance.GetCookie(url);
        var onPageCompletedEventArgs = new OnPageCompletedEventArgs { Cookies = cookies, Url = uri.AbsolutePath, RelativeUrl = uri.PathAndQuery, Host = uri.Host };
        handler?.Invoke(this, onPageCompletedEventArgs);
    }
private void AllowCookies(WebView view)
    {
        CookieManager.Instance.Flush();
        CookieManager.AllowFileSchemeCookies();
        CookieManager.SetAcceptFileSchemeCookies(true);
        CookieManager.Instance.AcceptCookie();
        CookieManager.Instance.AcceptThirdPartyCookies(view);
        CookieManager.Instance.SetAcceptCookie(true);
        CookieManager.Instance.SetAcceptThirdPartyCookies(view, true);
    }
问题是,我只能得到一块饼干(wc_cookie_ps_ck ),我无法看到其他身份验证cookie(.AspNetCore.Cookies) ). 以下是cookies在浏览器中的显示方式

请注意,在邮递员chrome浏览器中都会出现cookie。 但在android webview中,根本不会出现名为“.AspNetCore.Cookies”的cookie

根据Java文档,“”
由于我的两个cookie都有不同的路径,这就是路径设置为“/project”的cookie没有出现的原因吗?

在找到问题答案的几天后。我终于找到了答案。 我用桌面chrome对webview进行了远程调试,发现我需要的所有cookie都出现在webview中。 但是这个方法,

var cookies = CookieManager.Instance.GetCookie(url);
不返回设置了相同站点变量的cookie。 这看起来像是来自Xamarin Android的bug。我已经在报告中提出了一个问题

在xamarin android github问题中,我提到了复制的步骤。 对我来说,解决这个问题的解决办法是在我的asp.net核心后端项目中关闭samesite cookie varibale。 详情如下:

为了在使用Identity时配置应用程序cookie,您可以在启动的ConfigureServices中使用ConfigureApplicationCookie方法:

// add identity
services.AddIdentity<ApplicationUser, IdentityRole>();

// configure the application cookie
services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SameSite = SameSiteMode.None;
});
//添加标识
服务。额外性