*****Cookies怎么清除不掉?

OceanRain 2008-07-11 03:35:32
Response.Cookies.Clear();

怎么没有办法将Cookies给清除掉?

注意:以下回答勿扰
for(var i = 0; i < cookies.length; i++)
cookies[i] = "";
...全文
1393 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Blizzard_ 2008-07-12
  • 打赏
  • 举报
回复
把Cookie的过期时间设置为已经过去的时间就OK
hawking3000 2008-07-12
  • 打赏
  • 举报
回复
不太了解,帮顶一个。
gui0605 2008-07-11
  • 打赏
  • 举报
回复
HttpCookie cookie = HttpContext.Current.Request.Cookies["Oil_FrameWork"];
if (cookie != null)
{
cookie.Expires = DateTime.Now;
HttpContext.Current.Response.AppendCookie(cookie);
FormsAuthentication.SignOut();
}
OceanRain 2008-07-11
  • 打赏
  • 举报
回复
谢谢大家.我想清除所有的cookies,使用Request.Cookies.Clear()清除不掉呢
fellowcheng 2008-07-11
  • 打赏
  • 举报
回复
Cookies的使用
Cookies用于存储特定用户信息,它提供了Web程序中一种有用的方式。多年以来,JavaScript开发人员已经进行了有关cookie的大量工作。同样,ASP.NET通过System.Web空间名称也提供了cookie的访问。虽然你不应该使用cookie来存储一些敏感性的数据,但是,它们是处理锁细数据的一个极好的选择,比如颜色参数选择或者最后一次访问日期。

传递cookies
cookie是存储在客户端计算机的一个小文件。如果你是一个Windows用户,可以在用户路径中查看Cookies路径,即为Documents And Settings路径。这一路径包含这一文件名称的文本文件:

username @ Web site domain that created the cookie

(用户名称@建立cookie的站点域名)

.NET System.Web空间名称包含三个类,你可以使用它们来处理客户端的Cookies:

HttpCookie:提供一个建立和操作独立HTTP cookies的安全类型的方式。

HttpResponse:Cookies属性允许客户端cookies被操作。

HttpRequest:Cookies属性允许访问客户端操作的cookies。

HttpResponse和HttpRequest对象的Cookies属性将返回一个HttpCookieCollection对象,它包含着,将单独的cookies添加到集合(collection)中,以及从集合(collection)获得一个单独的cookies。

HttpCookie类
HttpCookie类针对于客户存储之用而建立的单独cookies。一旦HttpCookie对象被建立,你可以将其添加到HttpResponse对象的Cookies属性中。同样的,你可以通过HttpRequest对象访问现有的cookies。HttpCookie类包含以下的公有属性:

Domain(域名):获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问。

Expires(期限):获得或设置cookie的终止日期和时间,你可以将其设置为一个过去的日期以自动终止或者删除cookie。

Names(名称):获得或设置cookie名称。

Path(路径):获得或设置cookie的虚拟路径。这一属性允许你限制cookie范围,也就是说,访问cookie只能限制于一个特定的文件夹或者路径。设置这一属性限制为只能访问特定路径和该路径下的所有文件。

Secure(安全):发信号以表示是否使用Secure Sockets Layer (SSL)来发送cookie值。

Value(值):获得或设置一个单独的cookie值。

Values(信息):返回包含在cookie中的key/value的一个集合。

虽然这些还不是一个最详尽的列表,但它提供了处理cookies所需要的东西。对于这些属性的使用,以下VB.NET范例给予最好的理解:

Dim testCookie As New HttpCookie("LastVisited")

testCookie.Value = DateTime.Now.ToString

testCookie.Expires = DateTime.Now.AddDays(7)

testCookie.Domain = "builder.com"

Response.Cookies.Add(testCookie)

这一代码段建立了一个名为LastVisited的新的cookie,并赋予当前日期和时间的值。同样的,cookie终止期限设置为一个星期,相关的范围为populated。一旦建立对象,通过Response.Cookies对象的Add方法就可以将对象添加到客户端的cookies集合。HttpCookie构造函数中的方法有两种:

HttpCookie objectName = New HttpCookie("cookieName")

HttpCookie objectName = New HttpCookie("cookieName", "cookieValue")

同样,Response对象包含一个SetCookie方法,这一方法可以接受一个HttpCookie对象。

我的cookie在哪里?
一旦cookies被保存在客户端,有多种不同的方法以提供你访问它们。如果你知道cookie名称,可以使用HttpResponse对象很容易地访问它的值。以下VB.NET行显示了与cookie有关的值:




Response.Write(Request.Cookies("LastVisitied").Value)



除此之外,可以通过一个HttpCookieCollection对象访问cookies的完整列表。这就使得cookie列表可以用一个for循环来访问。以下C#代码说明了这样的例子:

HttpCookieCollection cookies;

HttpCookie oneCookie;

cookies = Request.Cookies;

string[] cookieArray = cookies.AllKeys;

for (int i=0; I < cookieArray.Length; i++) {

oneCookie = cookies[cookieArray[i]];

Response.Write(oneCookie.Name + " - " + oneCookie.Value);

}



VB.NET中相应的代码如下:



Dim i As Integer

Dim oneCookie As HttpCookie

For i = 0 To Request.Cookies.Count - 1

oneCookie = Request.Cookies(i)

Response.Write(oneCookie.Name + " - " + oneCookie.Value)

Next I

稳定也是一个观点
cookie文件存放在客户端机器,所以你的用户可以任意删除或更改。此外,用户还可以使cookies无效化。基于此原因,请记住不要依赖cookie数据。你应该将重要的信息保存在服务器──特别是一个数据库中。

在一个cookie中存储关键信息被认为是一种低级的程序设计,因为这些信息很容易被泄露,原因是这些信息位于客户机器的一个文件中。在这一点,一种方法就是使用SSL,这是一种可以避免敏感信息的更好方法。



我可以使用cookies吗?
用户可以在自己的浏览器上无效化cookie支持。你可以在自己的代码中访问这些设置以决定是否支持cookies。Request对象满足了这一想法,以下VB.NET代码显示了这一过程:



If Request.Browser.Cookies = True Then

' 使用cookies

Else

'没有cookie支持

End If



可以联合代码来使用cookie值。以下C#代码段对cookie支持进行了测试,并相应地将结果显示在一个文本框:

if (Request.Browser.Cookies == true)

{

if (Request.Cookies["LastVisited1"] == null)

{

HttpCookie newCookie = new HttpCookie("LastVisited1",DateTime.Now.ToString());

newCookie.Expires = DateTime.Now.AddYears(1);

Response.Cookies.Add(newCookie);

this.txtName.Text = "Is this your first time?";

} else {

this.txtName.Text = "We haven't seen you since " +

Request.Cookies["LastVisited1"].Value;

} }



你可以将这一代码段添加到ASP.NET页中的Page_Load事件。

保存数据的另一方式
ASP.NET提供了保存特定用户数据的多种方法。其中一个老方法就是cookies。对于敏感数据,虽然cookies不是最好的方法,但它是诸如颜色参数选择、最后一次访问日期等亲和力选项(benign items)的最佳选择。虽然这些敏感数据重要,但当用户的计算机崩溃时数据丢失,这也不是世界的末日。

===============

Cookie同Session的关系

  1. asp.net中Session可以采用cookie 和cookieless两种方法,cookieless方式是将SessionID放在URL中在客户端和服务端中来回传递,不需要用到cookie,在这里不讨论这个方式。

  2. 在asp.net中客户第一次请求一个URL,服务器给这个客户生成一个SessionID,并以非永久性的 Cookie发送到客户端。

  3. 非永久性的 Cookie只有在浏览器关闭后这些Cookie才随之消失,Session的超时判断是这样的过程:

  3.1 第一次客户端访问服务器,会得到一个SessionID,以非永久性的 Cookie发送到客户端。

  3.2 在这个浏览器关闭之前访问这个URL,浏览器都会把这个SessionID发送到服务端,服务端根据SessionID来维持对应此客户的服务端的各种状态(就是Session中保存的各种值),在web应用程序中可以对这些Session进行操作。

  3.3 服务端维护此SessionID的过期时间,IIS中可以设置Session的超时时间。每次请求都将导致服务端将此SessioID的过期时间延长一个设置的超时时间。

  3.4 当服务端发现某个SessionID已经过时,即某个客户已经在设置的超时时间内没有再次访问此站点,即将此SessionID,连同跟此SessionID相关的所有Session变量删除。

  3.5 客户端的浏览器未关闭前,并不知道服务端已经将这个SessionID删除,客户端依旧发送此SessionID的cookie到服务端,只是此时的服务端已经不认识此SessionID了,会将此用户当做新用户,再次分配一个新的SessionID。
OceanRain 2008-07-11
  • 打赏
  • 举报
回复
我在网上看到是这样写的:说设置超时时间,那么cookies是存在客户端硬盘上的;若不设置超时时间,那么建
立的cookies属于会话cookies,浏览器关闭cookies即消失.
我建立的cookies是会话cookies,使用Response.Clear()清除不掉的
insus 2008-07-11
  • 打赏
  • 举报
回复
cookie以文件的形式存在客户端的,你不可以删除客户端的文件(如能,你不得了啦!)
所以,你只能改写cookie的过期设置,令cookie过期即可。
pinhailinfeng 2008-07-11
  • 打赏
  • 举报
回复
Cookies.Clear();
反正SESSION[].CLEAR()是可以的
fellowcheng 2008-07-11
  • 打赏
  • 举报
回复
this.Request.Cookies["adminusers"].Expires = DateTime.Now.AddHours(-1);
sheng9hhd 2008-07-11
  • 打赏
  • 举报
回复
通过Response.Cookies["..."]这样来设置
OceanRain 2008-07-11
  • 打赏
  • 举报
回复
是会话cookies,存在浏览器上的cookies.

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧