天天看點

控制 Cookie 的作用範圍

        預設時,網站的所有 Cookies 都一起被存儲在用戶端,并且所有 Cookies 連同網站的任何請求一起被發送到伺服器。換句話說,網站中的每個頁面都能夠為網站擷取所有的 Cookies。但是,你能夠通過兩個方式來設定 Cookies 的作用範圍:

       把 Cookies 的作用範圍限制到伺服器的目錄,進而允許你把 Cookies 限制到網站的某個應用程式。

設定域的作用範圍,能夠允許你指定域中的哪些子域能夠通路 Cookie。

把 Cookies 限制到目錄或應用程式

要把 Cookies 限制到伺服器的目錄,請設定 Cookie 的 Path 屬性,如下執行個體所示:

HttpCookie appCookie = new HttpCookie("AppCookie");

appCookie.Value = "written " + DateTime.Now.ToString();

appCookie.Expires = DateTime.Now.AddDays(1);

appCookie.Path = "/Application1";

Response.Cookies.Add(appCookie);

提示:你同樣可以通過直接添加到 Cookies 集合的方式來寫入 Cookies,如前面的執行個體所示。

路徑既能夠位于網站的實體根目錄中也能夠位于虛拟根目錄中。結果将會是 Cookie 隻對于目錄或者虛拟根 Application1 中的頁面可用。例如,如果你的網站名稱是 [url]www.contoso.com[/url],在前面的執行個體中所建立的 Cookie 将隻對于路徑 [url]http://www.contoso.com/Application1/[/url] 以及其下所有子目錄中的頁面可用。但是,該 Cookie 對于其他應用程式(如 [url]http://www.contoso.com/Application2/[/url] 或者 [url]http://www.contoso.com/[/url])中的頁面則是不可用的。

提示:部分浏覽器中的路徑對大小寫字母是敏感的。你無法控制使用者如何在他們的浏覽器中輸入 URL,但是如果你的應用程式依賴于 Cookies 來限制特定的路徑,請確定你所建立的任何超級連結中的 URL 能夠與 Path 屬性值中的大小寫相比對。

限制 Cookie 的域範圍

預設時,Cookies 是與特定的域相關聯的。例如,如果你的網站是 [url]www.contoso.com[/url],你寫入的 Cookies 會在使用者從網站中請求任何頁面的時候被發送到伺服器。(可能不包括有特定的路徑值的 Cookies。)如果你的網站中還擁有子域(例如,contoso.com、sales.contoso.com、以及 support.contoso.com),那麼你可以把特定的子域與 Cookies 相關聯。要這樣做,請設定 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"].Domain = "contoso.com";

Cookie 這時候将與 sales.contoso.com 和 support.contoso.com 域一樣對于主域是可用的。

繼續閱讀