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

首頁 > 編程 > .NET > 正文

ASP.NET中Cookie編程的基礎知識(3)

2024-07-10 13:01:55
字體:
來源:轉載
供稿:網友
查看您的 cookie

  您可能會發現,了解創建 cookie 的效果會對您很有幫助。而查看 cookie 是比較容易的,因為它們都是文本文件,關鍵在于您能找到它們。不同的瀏覽器保存 cookie 的方式也不同。我將介紹 internet explorer 是如何保存 cookie 的。如果您使用的是其他瀏覽器,請查看該瀏覽器的幫助,以了解有關 cookie 處理方面的知識。

  查看 cookie 的一個簡便方法是讓 internet explorer 為您查找。在 internet explorer 中,從“工具”菜單中選擇“internet 選項”,在“常規”選項卡中單擊“設置”,然后單擊“查看文件”。internet explorer 將打開一個窗口,顯示所有的臨時文件,包括 cookie。在窗口中查找以“cookie:”開頭的文件 或查找文本文件。雙擊一個 cookie,在默認的文本文件中打開它。

  您也可以在硬盤上查找 cookie 的文本文件,從而打開 cookie。internet explorer 將站點的 cookie 保存在文件名格式為 <user>@<domain>.txt 的文件中,其中 <user> 是您的帳戶名。例如,如果您的名稱為 mikepope,您訪問的站點為 www.contoso.com,那么該站點的 cookie 將保存在名為 [email protected] 的文件中。(該文件名可能包含一個順序的編號,如 [email protected][1].txt。)

  這個 cookie 文本文件是與用戶相關的,所以會按照帳戶分別保存。例如,在 windows xp 中,您可以在如下所示的目錄中找到 cookie 文件:

c:/documents and settings/<user>/cookies

  要查找最新創建的 cookie,可以按修改日期對目錄內容進行排序,并查找最近修改的文件。

  您可以使用文本編輯器打開 cookie。如果該文件包含多個 cookie,這些 cookie 之間將用星號 (*) 分隔。每個 cookie 的第一行是 cookie 的名稱,第二行是值,其余各行則包含 cookie 的日常處理信息,例如過期日期和時間。cookie 中還有一個簡單的校驗和,如果更改 cookie 名稱或值的長度,瀏覽器就會檢測到修改并刪除該 cookie。

  多值 cookie(子鍵)

  以上示例為每個要保存的值(用戶名、上次訪問時間)都使用了一個 cookie 。您也可以在一個 cookie 中保存多個名稱/值對。名稱/值對也稱作“鍵”或“子鍵”,具體取決于您讀取的內容。(如果您熟悉 url 的結構,就會發現子鍵與其中的查詢字符串非常相象。) 例如,如果不希望創建名為“username”和“lastvisit”的兩個單獨的 cookie,可以創建一個名為“userinfo”的 cookie,并使其包含兩個子鍵:“username”和“lastvisit”。

  有很多原因會讓我們用子鍵來代替單獨的 cookie。最顯而易見的是,把相關或類似的信息放在一個 cookie 中會比較有條理。另外,由于所有信息都在一個 cookie 中,所以諸如有效期之類的 cookie 屬性就適用于所有信息。(當然,如果要為不同類型的信息指定不同的過期日期,就應該把信息保存在單獨的 cookie 中。)

  帶有子鍵的 cookie 還可以幫助您減小 cookie 的大小。如前面的 cookie 的限制一節所述,cookie 的總大小限制在 4096 字節以內,而且不能為一個網站保存超過 20 個 cookie。利用帶子鍵的單個 cookie,站點的 cookie 數量就不會超過 20 個的限制。此外,一個 cookie 會占用大約 50 個字符的基本空間開銷(用于保存有效期信息等),再加上其中保存的值的長度,其總和接近 4k 的限制。如果使用五個子鍵而不是五個單獨的 cookie,您可以省去四個 cookie 的基本空間開銷,總共能節省大約 200 個字節。

  要創建帶子鍵的 cookie,您可以使用用于編寫單個 cookie 的各種語法。以下示例顯示了編寫同一 cookie 的兩種不同方法,其中的每個 cookie 都帶有兩個子鍵:

response.cookies("userinfo")("username") = "mike"
response.cookies("userinfo")("lastvisit") = datetime.now.tostring
response.cookies("userinfo").expires = datetime.now.adddays(1)

dim acookie as new httpcookie("userinfo")
acookie.values("username") = "mike"
acookie.values("lastvisit") = datetime.now.tostring
acookie.expires = datetime.now.adddays(1)
response.cookies.add(acookie)

  控制 cookie 有效范圍

  默認情況下,一個站點的全部 cookie 都一起保存在客戶機上,而且所有這些 cookie 都會隨著對該站點發送的請求一起發送到服務器,也就是說,站點的每個頁面都能得到該站點的所有 cookie。但有時候,您可能希望 cookie 更具有針對性,這時,您可以通過兩種方法設置 cookie 的有效范圍:

  把 cookie 的有效范圍限制在服務器上的一個文件夾中,實際上這樣就將 cookie 限制到站點上的某個應用程序。

  把有效范圍設置為某個域,從而允許您指定域中的哪些子域可以訪問 cookie。

  將 cookie 限制到某個文件夾或應用程序

  要將 cookie 限制到服務器上的某個文件夾,請按如下方法設置 cookie 的 path 屬性:

dim appcookie as new httpcookie("appcookie")
appcookie.value = "written " & now.tostring
appcookie.expires = now.adddays(1)
appcookie.path = "/application1"
response.cookies.add(appcookie)

  當然,您也可以通過直接設置 response.cookies 來編寫 cookie,如前文所述。

  路徑可以是站點根目錄下的物理路徑,也可以是虛擬根目錄。這樣一來,cookie 就只能用于 application1 文件夾或虛擬根目錄中的頁面。例如,如果您的站點名為 www.contoso.com,則前面示例中生成的 cookie 就只能用于路徑為 http://www.contoso.com/application1/ 的頁面以及該文件夾下的所有頁面,而不適用于其他應用程序中的頁面,如 http://www.contoso.com/application2/ 或 http://www.contoso.com/ 下的頁面。

  提示:通過對 internet explorer 和 mozilla 瀏覽器進行測試發現,此處使用的路徑是區分大小寫的。一般而言,windows 服務器上的 url 不區分大小寫,但這種情況例外。您無法控制用戶如何在瀏覽器中輸入 url,但是,如果您的應用程序依賴于與特定路徑相關的 cookie,則請確保您所創建的所有超鏈接中的 url 與 path 屬性值的大小寫相匹配。

  將 cookie 的有效范圍限制到域

  默認情況下,cookie 與特定的域相關聯。例如,如果您的站點是 www.contoso.com,那么當用戶向該站點請求頁面時,您編寫的 cookie 就被發送到服務器。(有特定路徑值的 cookie 除外,我在上一節剛剛解釋過。) 如果您的站點有子域(例如 contoso.com、sales.contoso.com 和 support.contoso.com),就可以把 cookie 同特定的子域相關聯。為此,需要設置 cookie 的 domain 屬性,如下所示:

response.cookies("domain").value = datetime.now.tostring
response.cookies("domain").expires = datetime.now.adddays(1)
response.cookies("domain").domain = "support.contoso.com"

  如果按照這種方式設置域,則 cookie 只能用于指定子域中的頁面。

  您也可以利用 domain 屬性來創建可在多個子域中共享的 cookie。例如,對域進行如下設置:

response.cookies("domain").value = datetime.now.tostring
response.cookies("domain").expires = datetime.now.adddays(1)
response.cookies("domain").domain = "contoso.com"

  這樣,該 cookie 就可用于主域、sales.contoso.com 和 support.contoso.com。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临城县| 阜新| 玛沁县| 丹巴县| 上杭县| 精河县| 独山县| 乐昌市| 高唐县| 元氏县| 成武县| 澄迈县| 湾仔区| 泰来县| 平阳县| 墨江| 金川县| 牟定县| 萨迦县| 体育| 乌恰县| 封丘县| 浮山县| 奎屯市| 获嘉县| 腾冲县| 静乐县| 元阳县| 建平县| 潜江市| 三原县| 津市市| 牡丹江市| 增城市| 米林县| 闸北区| 峨眉山市| 白银市| 搜索| 如皋市| 虞城县|