Net 提供了两个Cookie类:
System.Web.HttpCookie 类 和 System.Net.Cookie 类
对应的有两个Cookie 集合类
System.Web.HttpCookieCollection 类 和 System.Net.CookieCollection 类
我们一般来理解他们的区别就是下面简单的一句:
System.Web 命名空间下的是给服务器段用的,System.Net 是给客户端程序用的。
实际上不止这点区别:
下面我们来对比这两个Cookie类的属性如下,这些属性都是Copy自MSDN中文版的说明文档:
System.Web.HttpCookie 类 |
System.Net.Cookie 类 |
MSDN中对构造函数的描述: 已重载。 初始化 HttpCookie 类的新实例。 |
MSDN中对构造函数的描述: 已重载。 根据 Netscape 规范初始化 Cookie 类的新实例。通常,应用程序无需构造 Cookie 类,因为该类会基于通过 HTTP 响应接收的 Set-Cookie 标头自动创建。 |
|
Comment
获取或设置服务器可添加到 Cookie 中的注释。
|
|
CommentUri
获取或设置服务器可通过 Cookie 来提供的 URI 注释。
|
|
Discard
获取或设置由服务器设置的丢弃标志。
|
Domain 获取或设置将此 Cookie 与其关联的域。
|
Domain 获取或设置 Cookie 对其有效的 URI。
|
|
Expired
获取或设置 Cookie 的当前状态。
|
Expires 获取或设置此 Cookie 的过期日期和时间。
|
Expires 获取或设置作为 DateTime 的 Cookie 过期日期和时间。
|
|
HttpOnly 确定页脚本或其他活动内容是否可访问此 Cookie。
|
Name 获取或设置 Cookie 的名称。
|
Name 获取或设置 Cookie 的名称。
|
Path 获取或设置要与当前 Cookie 一起传输的虚拟路径。
|
Path 获取或设置此 Cookie 适用于的 URI。
|
|
Port 获取或设置此 Cookie 适用于的 TCP 端口的列表。
|
Secure 获取或设置一个值,该值指示是否使用安全套接字层 (SSL)(即仅通过 HTTPS)传输 Cookie。
|
Secure 获取或设置 Cookie 的安全级别。
|
|
TimeStamp 获取此 Cookie 作为 DateTime 发出的时间。
|
Value 获取或设置单个 Cookie 值。
|
Value 获取或设置 Cookie 的 Value。
|
Values 获取单个 Cookie 对象所包含的键值对的集合。
|
|
|
Version 获取或设置此 Cookie 符合的 HTTP 状态维护版本。
|
你会看到 System.Net.Cookie 类 比 System.Web.HttpCookie 类多好些属性,一些我们WEB开发人员都不清楚的属性。为什么呢?
这就要从 cookie规范 说起。目前有以下几种Cookie规范:
- Netscape cookie草案:是最早的cookie规范,基于rfc2109。尽管这个规范与rc2109有较大的差别,但是很多服务器都与之兼容。
- rfc2109, 是w3c发布的第一个官方cookie规范。理论上讲,所有的服务器在处理cookie(版本1)时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正确的实施了该规范或仍在使用Netscape规范。
- rfc2965规范定义了cookie版本2,并说明了cookie版本1的不足。
rfc2965规范的使用,目前并不多。rfc2109规范相应要严格得多,在实际应用上,并不是所有的浏览器和Web服务器都严格遵守。因此相比较而言,Netscape cookie草案倒是一个比较简洁和被广泛支持的Cookie规范。
回过来我们再看 System.Web.HttpCookie 类 和 System.Net.Cookie 类的区别
我理解的他们的区别应该是:
System.Web.HttpCookie 类
这个类最初设计是考虑是WEB服务器用的,由于微软的WEB服务器并没有遵循 rfc2109 \rfc2965 规范。而是采用的 Netscape cookie草案方案。
同时为了兼顾以前ASP的一些编码习惯,于是就有了这个类这样的设计。
在 dudu 之前的一篇博客中提到的
遍历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)会出错。 为何微软会有这样的设计就可以理解了。
System.Net.Cookie 类
这个类最初设计时候应该是考虑主要是客户端使用的,
由于考虑到有些服务器的Cookie 是遵循 rfc2109 \rfc2965 规范,所以这个类的设计多了那些属性。
相关资料:
System.Net.Cookie和System.Web.HttpCookie有什么区别
http://topic.csdn.net/t/20050304/15/3824900.html
为什么foreach(HttpCookie cookie in Request.Cookies)会出错
http://www.cnblogs.com/dudu/archive/2004/12/21/80118.html
HTTP代理如何正确处理Cookie
http://www.ibm.com/developerworks/cn/java/j-cookie/
Netscape cookies 草案
http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/cookies.htm
W3C的 rfc2109 规范
http://www.w3.org/Protocols/rfc2109/rfc2109.txt
W3C的 rfc2965 规范
http://www.ietf.org/rfc/rfc2965.txt
分享到:
相关推荐
要想测试这个跨域,我们需要修改本地的host文件,配置两个域名,例如 127.0.0.1 www.xj5u.com 127.0.0.1 cc.xj5u.com 第一个项目绑定第一个域名, 第二个项目绑定第二个域名 然后开始测试第二个项目的登录就...
Compare------------------数据比较类(如比较时间大小) Cookie-------------------操作Cookie的类 DataBase-----------------数据操作的类 Encrypt------------------加密的类(有MD5和SHA1两种加密...
在其中建两个键字对{fa:爸爸},{fa:妈妈},在英文资源文件里修改“值”为英文{fa:Father},{mo:Mother}。然后复制两次,并修改名称Language.zh-CN.resx和Language.en-US.resx。为什么会有三个文件呢?系统...
通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...
ASP.NET 中 Cookie 的基本知识.doc ASP.NET 页面对象模型.doc asp.net200问-专家门诊—ASP.NET开发答疑 ASP.NetWebPage深入探讨.txt ASP.NET中为DataGrid添加合计字段.doc ASP.NET中实现DataGrid数据排序.doc ...
在ASP.NET里面,数据库还是这两个但是常用的语言多了一个C#,也是微软推荐的语言,为.NET平台定制的语言。这样ASP.NET就有四种组合:VB+ACCESS,VB+SQL,C#+ACCESS,C#+SQL,本教程会使用C#+ACCESS,兼顾四种来写,...
因为今后打算全面开始接触学习ASP.NET MVC源代码和jquery,打算今后用这两个框架打造蜘蛛侠论坛3.0版。所以,今天发布蜘蛛侠论坛基于ASP.NET 2.0 WebForm技术开发的最终版本。 我为这个论坛倾注了很多的个人时间,...
1.2 .NET的几个特性 7 1.3 万丈高楼平地起:面试者必会 9 1.3.1 C#介绍 10 1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 ...
在ASP.NET的代码隐藏页模型中,一个完整的.aspx页面包含两个页面,分别是以.aspx和.cs文件为后缀的文件,这两个文件在形成了整个Web窗体。在编译的过程中都被编译成由项目生成的动态链接库(.DLL),同时,.aspx页面...
一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet
在做asp.net开发时,为了存储一些信息,软件开发网常常是Session与Cookie同时使用。Session资料在软件开发网上会找到很多相关的,而Cookie相关的资料相对很少,所以想补充一下。下面是写Cookie的语法: 代码如下: ...
1.2 .NET的几个特性 7 1.3 万丈高楼平地起:面试者必会 9 1.3.1 C#介绍 10 1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 ...
在应用程序之间共享身份验证信息。
9.3.3 使用ASP.NET的Cookie-Parameter对象 277 9.3.4 使用ASP.NET的Form-Parameter对象 279 9.3.5 使用ASP.NET的Profile-Parameter对象 281 9.3.6 使用QueryStringParameter对象 282 9.3.7 使用SessionParameter对象...
系统必须有一个默认文件“GlobalLanguage.resx”,两种语言两个文件.) 六:修改英文和中文资源文件里的键值对。 说明(网上大多做法都是把语言设置为浏览器自动识别语言, 这种方式在实际项目中一般不用,所以直接...
此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。 ...
“我记录”这套源码总共包括 两个部分:一个 .net 平台下的全栈式、轻量级开发框架,包括 ORM、MVC、IOC、AOP、JSON、LOG 等,同时包括全套图文教程;用这个框架开发的 SNS 互联网产品。本产品以 SNS 为基础平台,...
一、设置cookies的方法很简单,有以下两种方法: 1、直接添加Cookie值: Response.Cookies[“userName”] = “Tom”; Response.Cookies[“userName”].Expires = DateTime.Now.AddDays(1) ; \\过期时间,在Cookies...
asp.net身份验证票源码 demo示例 共有两个