我有一个Xamarin Forms应用程序,我在Webview和HttpClient之间通过在登录后抓取它们来共享cookie。在iOS上这很好用,在Android上我有以下问题:
如果cookie是作为HTTPClinet Api调用的结果创建的,则使用WebView或HttpClient删除(已过期),cookie不再位于cookie列表中。使用HttpClient时,HttpClientHandler.CookieContainer的计数为0.
如果使用WebView创建cookie并使用其他WebView删除cookie,则cookie不再位于cookie列表中。
如果使用WebView创建cookie并使用HTTPClient Api调用删除cookie,则不会发生过期且cookie仍在HttpClinet的HttpClinetHandler的CookieContainer中,我可以看到计数不是0.
如果我查看HttpResponse,我会在标题中看到过期的cookie:
"MyTestCookie=; expires=Wed, 28-Feb-2018 21:25:08 GMT; path=/; HttpOnly"
如果我进一步查看CookieContainer,m_domainTable有2个条目,一个用于我的ip,没有cookie,一个用于我的ip,前面带有"。"包含应该过期/删除的cookie但它没有过期且具有原始值。
为Api调用和MVC页面创建cookie的服务器代码是:
var cookie = new HttpCookie("MyTestCookie");
cookie.HttpOnly = true;
cookie.Values["token"] = "309d530f956ac04";
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
和删除/过期的代码是:
if (Request.Cookies["MyTestCookie"] != null)
{
var cookie = new HttpCookie("MyTestCookie");
cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
}
这是一个错误,还是我错过了什么?