清除Cookies的方法多种多样:
Response.Cookies.Clear();
Response.Cookies.Remove("1589CN");
Response.Cookies["1589CN"].Expires = DateTime.Now.AddDays(-1);
但在实际使用中,会经常出现一个问题,例如很多程序员都会想当然的如下书写代码:
- if (Request.QueryString[ "init" ] != null )
- {
- Response.Cookies.Remove( "1589CN" );
- }
- if (Request.Cookies[ "1589CN" ] != null )
- {
- if (Request.Cookies[ "1589CN" ].Value != "" )
- {
- Response.Redirect( "http://www.1589.cn" );
- }
- }
分析:上述代码
1、首先,根据某个条件删除了Cookies值。
2、下面,立即判断Cookies值是否已经被删除。
存在的问题:
从服务器端的集合中移除Cookies后,由于新设置的Cookies修改还没有被发送至客户端 。而此时读取的Cookies值,是客户端的老数据 。
解决办法:(解决的方法多种多样,下面只提几个解决办法,以供参考)
1、可能有人会说使用Response.Flush(); 立即输入,但在实际测试中,并没有效果。
2、可以把逻辑分到两页中书写。
3、如果要写在一个页面里,可以使用转向URL解决:
例:JS方法
折叠
展开
javascript 代码
复制内容到剪贴板
top.window.location.href=top.window.location.href;