IE浏览器的两大问题(续)

Posted on 2006-07-02 21:53 killvin 阅读(444) 评论(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的网站是否也是按照这个思路去解决此问题的?