瞭解Cookie的同窗應該知道,瀏覽器客戶端是以domain,path,name做爲Cookie的惟一標識的,只要Name、Domain、Path中的任何一項不一樣,Cookie就是不能同的。由此便產生了同名Cookie。
例若有四個cookie以下:
d=1; expires=Sat, 23 May 2009 03:48:22 GMT; path=/; domain=.dny.com
d=2; expires=Sat, 23 May 2009 03:48:46 GMT; path=/; domain=.test.dny.com
d=3; expires=Sat, 23 May 2009 03:48:46 GMT; path=/test/; domain=.dny.com
d=4; expires=Sat, 23 May 2009 03:48:46 GMT; path=/test/; domain=.test.dny.com
他們是能夠共存的。
瞭解Cookie的同窗也應該知道,cookie的domain、path在服務器端都是隻寫的,也就是說在服務器端不能讀取到任何一個Cookie的domain或者path值,只能讀取到name和value。那麼問題便產生了,假設上面的四個Cookie同時存在,那麼服務器端讀取到的name爲「d」的cookie到底會是哪一個值呢?
通過個人測試,結果是這樣的,若是客戶端瀏覽器發送了多個同名的 cookie,那麼 Request.Cookie 將返回其中最符合(符合條件且範圍最小)當前domain、path的一個。
例如,仍是上面四個cookie,我經過下面這些地址去獲取Request.Cookie["d「],值是不一樣的:
http://test.dny.com/test/cookies.aspx 4
http://dny.com/test/cookies.aspx 3
http://test.dny.com/cookies.aspx 2
http://dny.com/cookies.aspx 1
瀏覽器
而實際上,服務器上用Request.Cookies.Count能夠知道,獲得的確實是有4個Cookie。服務器