今天在作驗證碼時發現一個問題: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路徑下的頁面訪問。cookie
3.瀏覽器會將domain和path都相同的cookie保存在一個文件裏,cookie間用*隔開。asp.net
4.含值鍵值對的cookie:之前一直用的是nam=value單鍵值對的cookie,一說到含多個子鍵值對的就蒙了。如今總算弄清楚了。含多個子鍵值對的cookie格式是name=key1=value1&key2=value2。能夠理解爲單鍵值對的值保存一個自定義的多鍵值字符串,其中的鍵值對分割符爲&,固然能夠自定義一個分隔符,但用asp.net獲取時是以&爲分割符。dom