ASP.NET中的两个Cookie类:HttpCookie类与Cookie类

时间:2022-11-25 22:57:09


 

System.Web.HttpCookie类,对应集合类System.Web.HttpCookieCollection类

System.Net.Cookie类,对应集合类System.Net.CookieCollection类

区别:

System.Web.HttpCookie是服务器端通过http请求从客户端获取的Cookie(服务器端用)

System.Net.Cookie是表示客户端程序通过http响应接收到的Cookie(客户端程序用)

属性差别:

属性

System.Web.HttpCookie类

System.Net.Cookie类(客户端程序用)

构造函数

初始化 HttpCookie 类的新实例。

根据Netscape规范初始化 Cookie类的新实例。通常,应用程序无需构造Cookie 类,因为该类会基于通过HTTP响应接收的 Set-Cookie标头自动创建。

Comment

获取或设置服务器可添加到Cookie中的注释

CommentUri

获取或设置服务器可通过Cookie来提供的URI注释

Discard

获取或设置由服务器设置的丢弃标志

Domain

获取或设置将此Cookie与其关联的域

获取或设置Cookie对其有效的URI

Expired

获取或设置Cookie的过期状态(返回ture|false:过期|没过期)

Expires

获取或设置此Cookie的过期日期和时间(返回DateTime)

获取或设置Cookie的过期日期和时间(返回DateTime)(默认MinValue,会话Cookie)

HasKeys

Cookie是否具有子键(获取,true|false)

HttpOnly

指定Cookie是否可通过客户端脚本访问(获取或设置,true|false)

Item

获取HttpCookie.Values属性的快捷方式(为与老ASP版本兼容)

Name

获取或设置Cookie名

获取或设置Cookie名

Path

获取或设置要与当前Cookie一起传输的虚拟路径

获取或设置Cookie适用于的URI

Port

获取或设置Cookie适用于的TCP端口的列表

Secure

获取或设置一个值,该值指示是否使用安全套接字层SSL(即仅通过HTTPS)传输Cookie

获取或设置Cookie的安全级别

TimeStamp

获取Cookie作为DateTime发出的时间

Value

获取或设置单个Cookie的值

获取或设置Cookie值

Values

获取单个Cookie对象所包含的键值对的集合

Version

获取或设置Cookie的HTTP状态维护版本

目前有以下几种Cookie规范:

Netscape cookie草案:是最早的cookie规范,基于rfc2109。尽管这个规范与rc2109有较大的差别,但是很多服务器都与之兼容。

rfc2109, 是w3c发布的第一个官方cookie规范。这个规范太严格了,以致很多服务器不正确的实施了该规范或仍在使用Netscape规范。

rfc2965,规范定义了cookie版本2,并说明了cookie版本1的不足。

推算区别:

(1)System.Web.HttpCookie 类:最初设计考虑是WEB服务器用的,由于微软的WEB服务器并没有遵循rfc2109 \rfc2965 规范。而是采用的 Netscape cookie草案方案。

同时为了兼顾以前ASP的一些编码习惯,于是就有了这个类这样的设计。

如:遍历System.Web.HttpCookieCollection,会有如下的写法:

foreach (string name in Request.Cookies)

{

    info += string.Format("{0} = {1} \r\n ", name, Request.Cookies[name].Value);

}

而foreach(HttpCookie cookie in Request.Cookies)会出错

(2)System.Net.Cookie 类:最初设计考虑主要是客户端使用的,由于考虑到有些服务器的Cookie 是遵循rfc2109 \rfc2965规范,所以这个类的设计多了那些属性