Cookie的作用域:Domain爲設置Cookie的有效域,Path限制有效路徑_ASp.net
Cookie的作用域
Cookie可以說是我學習Web開發最早接觸的幾個概念之一了,本以爲Cookie的使用對我來說應該毫無問題,但前端時間SSO的開發又給我上了一課
,再一次讓我經歷了 “入門-精通-陌生-熟悉” 的過程。
以前對於Cookie的認識僅侷限於Cookie是個在客戶端存放東東的途徑,只有放的人可以取。現在看來概念很模糊,雖然不錯但不準確。就以這樣的
概念用了那麼長的時間也相安無事,因爲所涉及的都是同一個項目內使用的Cookie,也從來沒考慮過“只有放的人可以取”這個“放的人”到底指的
是哪些,直到這次SSO的開發。突然發現在其他項目設的Cookie在另一個項目爲什麼也取得到(我預期是根本不可能取到的),隨即上網查了查資料着
實大吃一驚,原來還有Domain和Path這種東西存在。
Domain爲設置Cookie的有效域,Path限制有效路徑,如以下幾種情況:
1.最大可能的作用域 yourdomain.com所有角落(設置Cookie.Domain = "yourdomain.com",效果爲yourdomain.com域下的所有主機的所有位置都可以
取到這個Cookie)
2.域下的某主機 www.yourdomain.com(設置Cookie.Domain = "www.yourdomain.com",效果爲www主機下所有位置可以取)
3.某主機的某個文件夾 www.yourdomain.com/bbs (Cookie.Domain ="www.yourdomain.com" ; Cookie.Path = "/bbs",www主機的bbs下可以取)
默認情況是Domain爲當前主機且不限制位置
string eventUrl = "http://www.youdomain.com" + Request.CurrentExecutionFilePath.ToString();
// Request.CurrentExecutionFilePath.ToString(); 當前位置的虛擬目錄下的相對位置。
//******************************************************************************************************//
//設定cookie的生命週期,在這裏定義爲一個小時
DateTime dtNow = DateTime . Now ;
TimeSpan tsMinute = new TimeSpan ( 0 , 1 , 0 , 0 ) ;
cookie . Expires = dtNow + tsMinute ;
//******************************************************************************************************//
//***************** 存cookies ***********////
HttpCookie cookie = new HttpCookie("Passport");
cookie.Values.Add("listlofusageemail",this.txtUsername.Value.ToString());
cookie.Domain = "sjcm.cn";
Response.AppendCookie(cookie);
//***************** 取cookies ***********////
//HttpCookie ckstr=Page.Request.Cookies["Passport"];
//string cookiestr = ckstr.Values["listlofusageemail"];
//***************** 判斷cookies 是否存在 ***********////
if (ckstr == null)
{