国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ASP.NET中Cookie編程的基礎(chǔ)知識(shí)(2)

2019-11-18 19:11:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
    Cookie 的限制
  
    在開始討論 Cookie 的技術(shù)細(xì)節(jié)之前,我想先介紹一下 Cookie 應(yīng)用的幾條限制
。大多數(shù)瀏覽器支持最多可達(dá) 4096 字節(jié)的 Cookie,如果要將為數(shù)不多的幾個(gè)值保存到用戶計(jì)算機(jī)上,這一空間已經(jīng)足夠大,但您不能用一個(gè) Cookie 來(lái)保存數(shù)據(jù)集或其他大量數(shù)據(jù)。在實(shí)際應(yīng)用中,您可能并不希望在 Cookie 中保存大量的用戶信息,而只希望保存用戶編號(hào)或其他標(biāo)識(shí)符。之后,當(dāng)用戶再次訪問(wèn)您的站點(diǎn)時(shí),您就可以使用該用戶 ID 在數(shù)據(jù)庫(kù)中查找用戶的詳細(xì)信息。(有關(guān)保存用戶信息的說(shuō)明,請(qǐng)參閱 Cookie 和安全性。)
  
    瀏覽器還限制了您的站點(diǎn)可以在用戶計(jì)算機(jī)上保存的 Cookie 數(shù)。大多數(shù)瀏覽器
只允許每個(gè)站點(diǎn)保存 20 個(gè) Cookie。如果試圖保存更多的 Cookie,則最先保存的
Cookie 就會(huì)被刪除。還有些瀏覽器會(huì)對(duì)來(lái)自所有站點(diǎn)的 Cookie 總數(shù)作出限制,這個(gè)限制通常為 300 個(gè)。
  
    您最可能遇到的 Cookie 限制是:用戶可以設(shè)置自己的瀏覽器,拒絕接受
Cookie。您很難解決這個(gè)問(wèn)題,除非完全不使用 Cookie 而是通過(guò)其他機(jī)制來(lái)保存用戶相關(guān)信息。保存用戶信息的一種常用方法是會(huì)話狀態(tài),但會(huì)話狀態(tài)又依賴于 Cookie。這一點(diǎn)在后面的 Cookie 和會(huì)話狀態(tài)中闡述。
  
    注意:有關(guān)狀態(tài)管理和 Web 應(yīng)用程序中用于保存信息的選項(xiàng)的詳細(xì)信息,請(qǐng)參閱Introduction to Web Forms State(英文)和 State Management Recommendations(
英文)。   更一般的經(jīng)驗(yàn)很可能是,盡管 Cookie 在應(yīng)用程序中非常有用,應(yīng)用程序也不應(yīng)該依賴于能夠保存 Cookie。利用 Cookie 可以做到錦上添花,但不要利用它們來(lái)支持關(guān)鍵功能。如果您的應(yīng)用程序必須使用 Cookie,則您可以通過(guò)測(cè)試來(lái)確定瀏覽器是否接受 Cookie。我在本文后面的檢查瀏覽器是否接受 Cookie 一節(jié)中簡(jiǎn)單介紹了一種測(cè)試方法

  
    編寫 Cookie
  
    您可以利用頁(yè)面的 Response(英文)屬性來(lái)編寫 Cookie,該屬性提供的對(duì)象使
用戶可以將信息添加到由頁(yè)面向?yàn)g覽器呈現(xiàn)的信息中。Response 對(duì)象支持一個(gè)名為
Cookies(英文)的集合,您可以向其中添加要寫入瀏覽器的 Cookie。
  
    注意:下面要討論的 Response 對(duì)象和 Request 對(duì)象分別是包含 HttPResponse
(英文)和 HttpRequest(英文)類實(shí)例的頁(yè)面的屬性。要在文檔中查找 Response 和
Request 的信息,請(qǐng)參閱 HttpResponse 和 HttpRequest 下的內(nèi)容。
  
    在創(chuàng)建 Cookie 時(shí),您需要指定幾個(gè)值。最初,您要指定 Cookie 的名稱和其中
保存的值。您可以創(chuàng)建多個(gè) Cookie,每個(gè) Cookie 都必須具有唯一的名稱,以便日后讀取時(shí)識(shí)別。(Cookie 是按名稱保存的,所以如果您創(chuàng)建了兩個(gè)名稱相同的 Cookie,后保存的那一個(gè)將覆蓋前一個(gè)。)
  
    您可能還希望指定 Cookie 的過(guò)期日期和時(shí)間。Cookie 一般都寫入到用戶的磁盤
,然后可能一直都留在磁盤上。因此,您可以指定 Cookie 過(guò)期的日期和時(shí)間。當(dāng)用戶再次訪問(wèn)您的站點(diǎn)時(shí),瀏覽器會(huì)先檢查您站點(diǎn)的 Cookie 集合,如果某個(gè) Cookie 已經(jīng)過(guò)期,瀏覽器不會(huì)把這個(gè) Cookie 隨頁(yè)面請(qǐng)求一起發(fā)送給服務(wù)器,而是刪除這個(gè)已經(jīng)過(guò)期的 Cookie。(您的站點(diǎn)可能已經(jīng)在用戶計(jì)算機(jī)上寫入了多個(gè) Cookie,每個(gè) Cookie 都有各自的過(guò)期日期和時(shí)間。) 請(qǐng)注意,由瀏覽器負(fù)責(zé)管理硬盤上的 Cookie,這將影響您在應(yīng)用程序中對(duì) Cookie 的使用,我很快會(huì)介紹這方面的內(nèi)容。
  
    一個(gè) Cookie 的有效期應(yīng)為多長(zhǎng)?這取決于 Cookie 的用途,換句話說(shuō),取決于
您的應(yīng)用程序需要 Cookie 值保持有效的時(shí)間有多長(zhǎng)。如果利用 Cookie 統(tǒng)計(jì)網(wǎng)站的訪
問(wèn)者,您可以把有效期設(shè)置為 1 年,如果某個(gè)用戶已有一年時(shí)間未訪問(wèn)您的站點(diǎn),則可以把該用戶當(dāng)作新的訪問(wèn)者; 如果利用 Cookie 來(lái)保存用戶的首選項(xiàng),則可以把其設(shè)置為永遠(yuǎn)有效(例如 50 年后到期),因?yàn)槎ㄆ谥匦略O(shè)置首選項(xiàng)對(duì)用戶而言是比較麻煩的。有時(shí),您可能需要編寫在數(shù)秒或數(shù)分鐘內(nèi)即過(guò)期的 Cookie。在本文后面的檢查瀏覽器是否接受 Cookie 一節(jié)中,我列舉了一個(gè)示例,該示例中創(chuàng)建的 Cookie 的實(shí)際有效期就只有幾秒。
  
    注意:不要忘記用戶隨時(shí)可以刪除自己計(jì)算機(jī)上的 Cookie,所以即使您保存了長(zhǎng)期有效的 Cookie,用戶也可以自行決定將其全部刪除,同時(shí)清除保存在 Cookie 中的所有設(shè)置。
  
    如果沒有設(shè)置 Cookie 的有效期,還是可以創(chuàng)建 Cookie,但它不會(huì)保存到用戶的硬盤上,而是會(huì)成為用戶會(huì)話信息的一部分。如果用戶關(guān)閉瀏覽器或會(huì)話超時(shí),該 Cookie 就會(huì)被刪除。這種非永久性的 Cookie 很適合用來(lái)保存只需短時(shí)間保存的信息,或者保存由于安全原因不應(yīng)該寫入客戶計(jì)算機(jī)磁盤的信息。例如,如果用戶使用的是一臺(tái)公用計(jì)算機(jī),而您不希望把 Cookie 寫入這種計(jì)算機(jī)的磁盤上,這時(shí)就可以使用非永久性的 Cookie。
  
    您可以通過(guò)多種方法把 Cookie 添加到 Response.Cookies 集合中。以下示例介
紹了兩種完成此任務(wù)的方法:
  
  Response.Cookies("userName").Value = "mike"
  Response.Cookies("userName").Expires = DateTime.Now.AddDays(1)
  
  Dim aCookie As New HttpCookie("lastVisit")
  aCookie.Value = DateTime.Now.ToString
  aCookie.Expires = DateTime.Now.AddDays(1)
  Response.Cookies.Add(aCookie)
  
    該示例向 Cookies 集合中添加了兩個(gè) Cookie,一個(gè)稱為“userName”,另一個(gè)
稱為“l(fā)astVisit”。對(duì)于第一個(gè) Cookie,我直接設(shè)置了 Response.Cookies 集合的值
。您可以使用這種方法向集合中添加值,因?yàn)?Response.Cookies 是從
NameObjectCollectionBase(英文)類型的特殊集合派生得到的。
  
    對(duì)于第二個(gè) Cookie,我創(chuàng)建了 Cookie 對(duì)象的一個(gè)實(shí)例(HttpCookie [英文] 類
型),并設(shè)置了其屬性,然后通過(guò) Add 方法把它添加到 Response.Cookies 集合。實(shí)例化 HttpCookie 對(duì)象時(shí),您必須把 Cookie 名稱作為構(gòu)造函數(shù)的一部分進(jìn)行傳遞。
  
    這兩個(gè)示例完成了相同的任務(wù),即向?yàn)g覽器寫入一個(gè) Cookie。您要采用哪種方法主要取決于您的個(gè)人喜好。您可能會(huì)發(fā)現(xiàn)第二種方法在設(shè)置 Cookie 屬性方面要稍微容易一些,但同時(shí)您也會(huì)注意到兩者的差別并不是很大。
  
    在這兩種方法中,有效期值必須為 DateTime 類型。而“l(fā)astVisited”值也是日
期/時(shí)間值。但在這種情況下,我必須把日期/時(shí)間值轉(zhuǎn)換為字符串,因?yàn)?Cookie 中的
任何值最終都是以字符串的形式保存的。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 固始县| 莱西市| 古浪县| 甘孜| 巴里| 迁西县| 萍乡市| 清丰县| 徐州市| 石棉县| 手机| 平陆县| 南部县| 隆德县| 昌吉市| 乌什县| 新泰市| 万载县| 灵璧县| 武邑县| 康定县| 文水县| 阿坝县| 嘉峪关市| 建始县| 江源县| 金坛市| 扬州市| 镇宁| 都匀市| 娱乐| 平远县| 德格县| 客服| 棋牌| 饶平县| 内乡县| 犍为县| 托克逊县| 全椒县| 岑溪市|