完美清除Cookies及在开发中的使用习惯

清除Cookies的方法多种多样:

Response.Cookies.Clear(); 
Response.Cookies.Remove("1589CN"); 
Response.Cookies["1589CN"].Expires  =  DateTime.Now.AddDays(-1);  

但在实际使用中,会经常出现一个问题,例如很多程序员都会想当然的如下书写代码:

  1. if  (Request.QueryString[ "init" ] !=  null )     
  2. {     
  3.     Response.Cookies.Remove( "1589CN" );        
  4. }     
  5. if  (Request.Cookies[ "1589CN" ] !=  null )        
  6. {        
  7.      if  (Request.Cookies[ "1589CN" ].Value !=  "" )         
  8.     {        
  9.         Response.Redirect( "http://www.1589.cn" );        
  10.     }        
  11. }  

分析:上述代码

1、首先,根据某个条件删除了Cookies值。
2、下面,立即判断Cookies值是否已经被删除。

存在的问题:

从服务器端的集合中移除Cookies后,由于新设置的Cookies修改还没有被发送至客户端 。而此时读取的Cookies值,是客户端的老数据 。 

解决办法:(解决的方法多种多样,下面只提几个解决办法,以供参考)

1、可能有人会说使用Response.Flush(); 立即输入,但在实际测试中,并没有效果。
2、可以把逻辑分到两页中书写。
3、如果要写在一个页面里,可以使用转向URL解决:
      例:JS方法

折叠 展开 javascript 代码 复制内容到剪贴板
top.window.location.href=top.window.location.href; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值