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規範,所以這個類的設計多了那些屬性