歡迎訪問北大青鳥魯廣校區~

  1. 加入收藏
  2. 設為主頁
  3. 學校簡介

三分鐘了解北大青鳥

×
  • 北大青鳥大數據課程
  • 北大青鳥網絡工程師
  • 北大青鳥web設計專業
  • 北大青鳥PHP專業
  • 北大青鳥啟蒙星課程

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

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

    武漢马刺vs纳什魯廣校區.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的。

本文標題:在.net中cookies和Session具有哪些特性,于2012年01月14日10時42分發布于马刺vs纳什。武漢北大青鳥宏鵬魯廣校區,是北大青鳥武漢電腦學校,專業IT計算機培訓,擁有軟件/網絡/安卓/Web前端/Java課程.北大青鳥地址:光谷廣場魯巷數碼港.電話:027-87807717

專業老師指導

趙老師

從事IT教育培訓十年有余,致力于幫助廣大學子找到適合自己的專業。

培訓咨詢客服

劉老師

IT培訓專業客服,用自己的真誠解決了無數學子的困惑。

本文地址:
文章標題:
  • 北大青鳥Java軟件開發
  • 北大青鳥UI設計課程_零基礎可學
  • 北大青鳥動漫設計_武漢設計學校
  • 北大青鳥數字藝術_武漢電腦學校
×
在線咨詢更多問題

如您有任何疑問
在線咨詢隨時為您解答或撥打咨詢熱線:17740513250

×
  • 姓 名*
  • 手 機*
  • QQ號/微信號
  • 所報學科 *
  • 其他備注
  • 溫馨提示:請保持手機暢通,咨詢老師將為您提供專屬的一對一報名服務。