Chr*_*ine 5 android xamarin.forms
我有一个 Xamarin Forms 应用程序,我通过在登录后抓取它们在 Webview 和 HttpClient 之间共享 cookie。在 iOS 上这工作正常,在 Android 上我有以下问题:
如果 cookie 是作为 HTTPClinet Api 调用的结果创建的,然后使用 WebView 或 HttpClient 删除(过期),则 cookie 不再在 cookie 列表中。使用 HttpClient 时,HttpClientHandler.CookieContainer 的计数为 0。
如果 cookie 是使用 WebView 创建并使用另一个 WebView 删除的,则 cookie 不再在 cookie 列表中。
如果 cookie 是使用 WebView 创建并使用 HTTPClient Api 调用删除的,则不会发生过期并且 cookie 仍在 HttpClinet 的 HttpClinetHandler 的 CookieContainer 中,我可以看到计数不是 0。
如果我查看 HttpResponse,我会在标题中看到过期的 cookie:
"MyTestCookie=; expires=Wed, 28-Feb-2018 21:25:08 GMT; path=/; HttpOnly"
Run Code Online (Sandbox Code Playgroud)
如果我进一步查看 CookieContainer,则 m_domainTable 有 2 个条目,一个是我的没有 cookie 的 ip,另一个是我的 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);
Run Code Online (Sandbox Code Playgroud)
和删除/过期的代码是:
if (Request.Cookies["MyTestCookie"] != null)
{
var cookie = new HttpCookie("MyTestCookie");
cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
}
Run Code Online (Sandbox Code Playgroud)
这是一个错误,还是我错过了什么?
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |