android webview 保存 cookie,请问android webview 如何存储cookie?

0ddeae9d65a50e4722f2ca5ec6dbd71c.png

FFIVE

在IE里的Cookie问题,如IE下面无法登出,或无法登录,或者登录後信息却无法取到,而Firefox下面一直是通过的,下面是Cookie问题的主要原因:首先看一下Cookie存取代码 (这个Cookie操作支持二级域名访问)#region 存取Cookiepublic void SetCookie(string cookieName, string cookieValue, int cookieExpiryMinute){cookieName = cookieName.ToLower();HttpCookie cookie = new HttpCookie(cookieName,cookieValue);cookie.Expires = DateTime.Now.AddMinutes(cookieExpiryMinute); //设置Cookie过期时间cookie.Path = "/";cookie.Domain = ".163.com";HttpContext.Current.Response.Cookies.Remove(cookieName);HttpContext.Current.Response.Cookies.Add(cookie);}public void SetCookie(string cookieName, string cookieValue){SetCookie(cookieName, cookieValue, 60);}public void ClearCookie(string cookieName){SetCookie(cookieName,"",-5);}public string GetCookie(string cookieName, string defaultValue){cookieName = cookieName.ToLower();string strResult = defaultValue;try{if (HttpContext.Current.Request.Cookies != null){if (HttpContext.Current.Request.Cookies[cookieName] != null){strResult = HttpContext.Current.Request.Cookies[cookieName].Value;}}}catch (Exception ex){this.WriteWrongLog(ex);}return strResult;}public string GetCookie(string strName){return GetCookie(strName, "");}#endregionCookie存取看起来的确很简单,而在.NET里面好像更简单。但是......................往往简单的东西经常出现一些问题,让人找不到原因。之前这里出现的问题就是,在写Cookie的时候,没有处理旧的同名Cookie,例如:第一次登录的时候写入 Cookie username=jsonlee 和 password=123456有时候有可能会在未退出的情况下重新登录一下,这样就会再次写入同样的Cookie,但这样的情况,好像没有把原来的覆盖(我用 IECookies 这个工具看到的),而是新加入一个同名的。这样一来明显问题就存在了。HttpContext.Current.Response.Cookies.Remove(cookieName); 这样一来问题就解决了。IE页面缓存的问题:我现在的用户登录状态是通过 Ajax调用一个 GetUserBar.aspx 来取得用户状态栏信息的以下是 GetUserbar.aspx 的代码〈%@ Page language="c#" Codebehind="GetUserBar.aspx.cs" Inherits="Web.GetUserBar" %〉〈%if(CheckIsLogin()){%〉您好:〈%=this.GetNickname()%〉〈a href="〈%=UrlRewriteLink.GetUserHomeUrl()%〉"〉您的主页〈/a〉 |〈a href='/user/user_setup.aspx'〉个人设置〈/a〉 |〈a href='/logout.aspx'〉退出〈/a〉〈%}else{%〉〈span style="margin-right:10px; "〉您已经登录了!〈/span〉〈a href="/reg.aspx"〉注册〈/a〉 | 〈a href="/login.aspx"〉登录〈/a〉〈%}%〉如上面这段代码,如果通过Ajax调用它,哪就可以在静态页面上取得用户的登录信息这个问题就出来了,而且还不容易发现,哪就是IE的页面缓存,IE好像有个机制会把访问过的页面缓存到 C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files 这个文件夹里面。所以每个Ajax调用的GetUserBar.aspx时候IE取到的都是缓存信息,而不是GetUserBar.aspx运行的结果。所以才出现了,一直无法登出或无法登录的状态(其实是已经登录登出了的,只是表面上看不出来)。解决办法就是在 GetUserBar.aspx 的Page_Load方法里面加入设定"Response.Expires"的时间的处理,如:private void Page_Load(object sender, System.EventArgs e){this.Response.Expires = 0;}这样问题就解决了。网上存在很多的Cookie操作的文章,可是这些东西都是抄来抄去的,哪个站长跟本就没有对这些代码做过测试,我以前试著看过好多个,很多是存在有问题的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值