我碰到Cookie的一个问题

CSDN的用户反馈回来一个很诡异的bug,当用户系统的时间不正确的时候,比正确时间快或者慢时,用户就登录不上去,很诡异。解决这个问题花了我不少时间。导致这个问题的原因如下:

使用 HttpContext.Current.Response.Cookies.Set( 更新一个Cookie后, 会导致 HttpContext.Current.Request.Cookies 中的Cookie的更新全部失效。下面是一个演示这个问题的代码:

HttpCookie hc1 = new HttpCookie("aaa", "34556");
HttpCookie hc2 = new HttpCookie("bbb", "8888");

HttpContext.Current.Request.Cookies.Set(hc1);
Response.Write(HttpContext.Current.Request.Cookies["aaa"].Value);
Response.Write("/r/n
/r/n
"); HttpContext.Current.Response.Cookies.Set(hc2); if (HttpContext.Current.Request.Cookies["aaa"] != null) Response.Write(HttpContext.Current.Request.Cookies["aaa"].Value); else Response.Write("null");

这个程序执行后,会显示:

34556
null

解决方法很简单:

所有的 HttpContext.Current.Request.Cookies.Set( 代码都放在 HttpContext.Current.Response.Cookies.Set( 代码之后。

至于为何客户端时间和服务器时间一致时,就没问题,客户端和服务器时间不同步就有问题,那就很怪异了,我一直也没想明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值