標籤:
今天在做驗證碼時發現一個問題:A、B視窗都開啟同一個頁面,A先產生一個驗證碼,B再產生驗證碼,這時A所產生的驗證碼被B覆蓋掉了。原因是使用了同名的cookie來儲存驗證碼。一時找不到解決方案就參考了WebQQ的登入畫面,發現tx也沒有解決這個問題,也許是覺得這個不算是問題吧。但還是借這個機會再次瞭解一下cookie好了。
下面是在網上學習一番後得到的總結(如有紕漏請指正):
1.domain表示的是cookie所在的域,預設為請求的地址,如網址為www.test.com/test/test.aspx,那麼domain預設為www.test.com。而跨域訪問,如域A為t1.test.com,域B為t2.test.com,那麼在域A生產一個令域A和域B都能訪問的cookie就要將該cookie的domain設定為.test.com;如果要在域A生產一個令域A不能訪問而域B能訪問的cookie就要將該cookie的domain設定為t2.test.com。
2.path表示cookie所在的目錄,asp.net預設為/,就是根目錄。在同一個伺服器上有目錄如下:/test/,/test/cd/,/test/dd/,現設一個cookie1的path為/test/,cookie2的path為/test/cd/,那麼test下的所有頁面都可以訪問到cookie1,而/test/和/test/dd/的子頁面不能訪問cookie2。這是因為cookie能讓其path路徑下的頁面訪問。
3.瀏覽器會將domain和path都相同的cookie儲存在一個檔案裡,cookie間用*隔開。
4.含值索引值對的cookie:以前一直用的是nam=value單索引值對的cookie,一說到含多個子索引值對的就蒙了。現在總算弄清楚了。含多個子索引值對的cookie格式是name=key1=value1&key2=value2。可以理解為單索引值對的值儲存一個自訂的多索引值字串,其中的索引值對分割符為&,當然可以自訂一個分隔字元,但用asp.net擷取時是以&為分割符。
http://www.cnblogs.com/fsjohnhuang/archive/2011/11/22/2258999.html
理解cookie的path和domain屬性(轉)