两个Cookie类

news/2024/7/8 16:27:29

.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





http://www.niftyadmin.cn/n/3657472.html

相关文章

2.4 R-CNN

目录2.4 R-CNN2.4.1 采样2.4.2 R-CNN 架构2.4.3 R-CNN 设计细节2.4.3.1 IoU 概念2.4.3.2 图片缩放策略2.4.3.3 预训练微调模式2.4.3.4 NMS 算法2.4.3.5 边界框回归参考资料2.4 R-CNN R-CNN 由 Ross Girshick(rbg) 提出,Ross Girshick是 Facebook 人工智能研究&…

使用 Request.QueryString 接受参数时,跟编码有关的一些问题

我们先来看以下几个请求,看a.aspx 页面用Request.QueryString接受到的是啥信息? 页面URLRequest.QueryString["info"]接受到的值案例一a.aspx?info%25 % 案例二a.aspx?info%bc%bc%ca%f5 情况分析: 案例一 a.aspx?info%25 为何…

2.5 SPPNet

目录2.5 SPPNet2.5.1 SPP 的目的2.5.2 SPP 架构2.5.3 SPP 用于目标检测2.5.4 候选区域映射参考资料2.5 SPPNet SPP(Spatial Pyramid Pooling,空间金字塔池化) 由何凯明团队在 ILSVEC 2014 中提出,利用空间金字塔池化方法可以提高已存在的一些 CNN 架构对…

e时代的精灵-----Web Service

e时代的精灵-----Web ServiceInternet/Intranet改变了世界,也改变了你和我的生活方式。 从Darpanet诞生的第一天起,便注定了这个精灵的出现。 我们不得不感谢NASA,因为它的一个偶然,导致了如此深刻而美妙的历史必然。 ---世界真美…

2.6 Fast R-CNN

目录2.6 Fast R-CNN2.6.1、Fast R-CNN 整体架构概览图2.6.2、Fast R-CNN 架构2.6.2.1 RoI 池化层2.6.2.2 多任务损失参考资料2.6 Fast R-CNN Fast R-CNN 是 rgb 完成的 R-CNN 家族中的第二篇重要作品,在 R-CNN 以及 SPPNet 的基础上做了许多优化工作,在…

1.7 BN-Inception

目录1.7 BN-Inception1.7.1 背景1.7.2 BN 计算过程1.7.3 BN 的优势参考资料Next1.7 BN-Inception 2015 年 2 月 Google 又发表了新的文章,在 GoogLeNet 中加入一个 Batch-normalized 层,习惯于将改进后的网络称为 BN-Inception。Batch-normalized 层的主…

脚本引流是什么?其实很好理解,就是利用软件脚本来引流,这种软件我们通常叫引流脚本

脚本引流是什么?其实很好理解,就是利用脚本来引流,这种软件我们通常叫引流脚本,引流脚本的研发就是结合了以往的那些加人软件,从中吸取了长处并且升级了功能,而且通过不断的测试改进,在今年的7月…

web Service

Web Service是什么 Web Service是一种以SOAP为轻量型传输协议、以XML为数据封装标准、基于HTTP的组件集成技术。 目前流行的主流组件技术大致有如下几种:Corba、Dcom/Com、EJB等。似乎每一种技术诞生之日起,便号称是最具延展性和开放性的技术&#xff0c…