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规范,所以这个类的设计多了那些属性