Posted on 2006-07-02 21:53
killvin 閱讀(450)
評論(0) 編輯 收藏 所屬分類:
java
在上一篇的文章中,比較仔細的分析了IE對于Cookie處理過程中出現的問題,既然存在問題就要想辦法解決,而問題的關鍵在于IE沒有能夠"老實"的報告用戶對于Cookie的設置問題
IE
GET /mail HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)
Host: mail.google.com
Connection: Keep-Alive
Cookie:
gmailchat=killvin.liu@gmail.com/519974
; PREF=ID=d68c481e542af276:NW=1:TM=1151742225:LM=1151742225:S=2qbdhg0_z3i-OAbW; SID=DQAAAG8AAACEdcjD2IZMNqZVatDbD62X8_U18oJuTVQc9XZUJi7MgCkM8sggJ8M5npZ35GXjdalT2o8QWPUve04tepy61MPv4v_EpILafg3JdIf8AFjD91aMT0tI5gb763FouV3e_2-C364HDO5Qzb4P4gjjgpHC
Firefox
GET /mail HTTP/1.1
Host: mail.google.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
我們可以注意到:如果用戶關閉了瀏覽器的Cookie選項,在Firefox中對于新的請求是包含Cookie的信息的,然而IE卻恰恰相反!這也就直接用IE瀏覽一些網站所導致的Cookie校驗失敗問題(比如即使用戶在使用過程中突然關閉Cookie,依然可以自由的訪問網站的各項服務),進一步,如果某個網站是讀取依靠Cookie中的信息來驗證用戶(尤其是那種保存客戶信息的提示),即使這個用戶離開或者關閉窗口,任何一個后來的人都可以輕松的瀏覽這個用戶的私有信息!這就是Cookie的最大的問題所在,當然這是另外的話題,不屬于本次討論的范疇,這一次要說的是
如何避免IE瀏覽器下,用戶關閉Cookie的問題。
有一個思路,經過測試我們發現IE瀏覽器只是在首次頁面請求的時候才會去讀取Cookie的值,所以,為了避免IE瀏覽器關閉Cookie的問題,可以在用戶請求某個鏈接的時候,先將用戶的Cookie存放在某處,并清空此時所有的Cookie值,再次的請求頁面,而這樣做的目的就是強迫IE讀取硬盤上的Cookie,如果此時用戶關閉了Cookie,就不會在請求的頭信息中看到Cookie信息;如果沒有關閉Cookie,就可以放心的將原先的Cookie寫回Reponse對象。
只是不知道Google的網站是否也是按照這個思路去解決此問題的?