新时时彩豹子走势图

IT職業教育

華中地區北大青鳥校區IT集訓營

027-87807717

北大青鳥首頁 > 熱門IT技術教程 > .Net技術教程 > > 在.net中cookies和Session具有哪些特性

在.net中cookies和Session具有哪些特性

時間:2012-01-14 10:42 來源:北大青鳥武漢宏鵬魯廣校區作者:admin
導讀:武漢北大青鳥魯廣校區.NET技術 1. Cookie 的限制 大多數瀏覽器支持大為 4096 字節的 Cookie。 瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數量。大多數瀏覽器只允許每個站點存

    武漢北大青鳥魯廣校區.NET技術  
    1.Cookie 的限制

  大多數瀏覽器支持 4096 字節的 Cookie。

  瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數量。大多數瀏覽器只允許每個站點存儲 20 個 Cookie;注意這里的20個是指主鍵值,也就是20條Cookies記錄,但是每個Cookies記錄還可以包含若干子鍵,下面會詳細解釋。如果試圖存儲更多 Cookie,則舊的 Cookie 便會被丟棄。有些瀏覽器還會對它們將接受的來自所有站點的 Cookie 總數作出一定限制,通常為 300 個。

  2.Cookies的存儲格式

  Cookies可以包含一個主鍵, 主鍵再包含子鍵。比如asp.net中獲取Cookies的格式是:

  Request.Cookies[key][subkey].ToString();

  其中的key就是主鍵,subkey就是主鍵關聯的子鍵。

  (1)本地磁盤存儲格式:

  My.Common.TestCookieInfo

  Pkid=999&TestValue=aaabbbcccdddeee

  localhost/

  1536

  3059603968

  30021392

  2348960464

  30021191

  *

  其中的Pkid=999&TestValue=aaabbbcccdddeee 是Cookies的值,由于使用了subkey=subvalue的格式, 所以此Cookies是包含子鍵的。

  (2)Javascript中的Cookie格式

  在Javascript中給的Cookie是一個字符串,通過document.cookies獲取。字符格式如下:

  My.Common.SubKey=Pkid=999&TestValue=aaabbbcccdddeee; SingleKey=SingleKeyValue

  上面的字符串包含了兩個Cookies,一個是不包含子鍵的SingleKey, 一個是包含pkid和TextValue兩個子鍵的My.Common.SubKey,兩個Cookie通過“;”分割。

  (3)Asp.Net中的Cookies格式

  和所有的服務器端語言一樣,Asp.Net中使用集合類保存Cookies集合:

  public sealed class HttpCookieCollection : NameObjectCollectionBase

  {...}

  通過HttpResquest和HttpResponse對象的Cookies屬性,可以獲取和寫入當前頁面的Cookies。

  3.Cookies的內容編碼格式

  Cookies的值中可以保存除了“;”以外的標點符號。但是不能保存漢字。保存漢字會出現亂碼。

  所以對于Cookies中的內容要進行統一的編碼和解碼。為了在瀏覽器端和服務器端都能夠進行解碼和編碼, 所以要統一使用UTF編碼格式。

  主要是因為javascript中只能使用UTF編碼格式。

  4.Cookies的Path屬性

  Cookies的Path屬性表示當前的Cookies可以作用在網站的那個路徑下。

  比如下面的兩個同名的Cookies:

  

 

  允許存在兩個同名但是Path不同的Cookies。

  無論是服務器端還是客戶端,在獲取時優先獲取本頁路徑下面的Cookies。

  也就是說如果在、/chapter10/路徑下面的頁面, 獲取testKey這個Cookies的值,則只能獲取到testValue222222這個值。

  5.Cookies的過期時間

  如果保存Cookies時未設置過期時間, 則Cookies的過期時間為“當前瀏覽器進程有效”,即和Session一樣關閉瀏覽器后則消失。在asp.net中還可以通過設置HttpCookie對象的過期時間為DateTime.MinValue來指定此Cookies為跟隨瀏覽器生效。(這句話來之不易啊,在腦袋等人的幫助下才查到的。)

  如果設置了過期時間并且大于當前時間,則會保存Cookies值。

  如果設置了過期時間但是小于等于當前時間,則清除Cookies值。

  6.Cookies與Session

  有時我們會忽略Cookies與Session的關系。但是兩者是密不可分的。

  Session的標示:SessionID是通常保存在Cookies中的(也可以保存在URL中)。對于Asp.Net而言,SessionID保存在鍵值為“ASP.NET_SessionId”的Cookies中,如圖:

  

 

  因為Cookies的存儲數量是有限制的,所以我們的系統在保存Cookies的時候一定要注意防止沖掉這一個關鍵的Cookies。在下文介紹的理想實踐-以強對象方式保存Cookies的代碼中特意對這個Cookies做了處理。

  注意,在客戶端使用javascript腳本無法獲取“ASP.NET_SessionId”的Cookies, 因為此Cookies在服務器端設置了HttpOnly屬性為true。

  ASP.Net中HttpCookie對象的HttpOnly 屬性 指定一個Cookie 是否可通過客戶端腳本訪問。不能通過客戶端腳本訪問為 true;否則為 false。默認值為 false。此屬性并不能完阻止客戶端在本地獲取cookies,但是可以增加通過腳本直接獲取的難度。

  Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持 Cookie 屬性 HttpOnly。

  7.Cookies加密

  在設置Cookies的屬性時,有一個選項Secure用來控制Cookie的加密特性。

  如果通過 SSL 連接 (HTTPS) 傳輸 Cookie,則為 true;否則為 false。默認為 false。

  如果我們保存一個Cookies并設置加密,那么在非HTTPS的頁面中,無論是使用javascript還是服務器端都無法獲得此Cookies。但是在本地依然可以看到此Cookies的存在。

  8.Cookies與Ajax

  如果Ajax請求訪問一個服務器頁面,此服務器頁面是可以向用戶瀏覽器寫入Cookies和Session的。

告訴我們,你現在想了解什么?

精彩專題——96%的同學看到這里都會點擊下面的專題

Copyright (c) 2006-2020 武漢宏鵬教育咨詢有限公司 版權所有 All Rights Reserved.

新时时彩豹子走势图