发现用自己的电脑 IE7.0总是无法正常登录,别的电脑都可以。
每次登录后又被重定向回了登录页面。
可换成Firefox和google chrome 却一切OK,后来还把浏览器升级到IE8.0 问题依就。不由得想起,自己以前有
次也遇到过就种情况,后来实在没时间找原因,直接把系统还原了。还原后就对了。 这次又遇到,郁闷了。
初步推断应该是Cookie的问题。 在网上查了些资料,把所有现有Cookie删除,又将“隐私”选项设为“接受所
有Cookie”后再试。问依旧。
没办法,只能抓包了。 谁知一看就发现问题了:
expires=Tue,1-Jul-2009 14:23:00 GMT; path=/
Cookie的过期时间好像不对,今天明明是7月8号…… 哦,终于想起了,昨天晚上我好像为了做什么,把我的机
器的日期改了下,后来就忘了。
但是为什么用Firefox没有问题呢?
搜索了下,看到了一篇IE 与FireFox 对Cookie时间的不同理解这篇文章后恍然大悟:
对于IE而言,Cookie的有效时间段是理解为客户端的时间与服务器端时间的间隔,即如果Cookie的时间设置为time()+300,那么在 IE里,Cookie有效的条件是:客户端时间(验证Cookie时间)-服务器端时间(定义Cookie的时间)<300(秒);所以这种 情况下,当我们网站上的验证码脚本被执行时,Cookie就已经过期了,所以验证码失效。
而对于FireFox而言,Cookie的有效时间完全由服务器端的时间决定,以上面的假设为例,即Cookie有效的条件是:服务器端时间T2 (验证Cookie时间)-服务器端时间T1(定义Cookie的时间)<300(秒)。所以在FireFox里,当打开系统登录页时,我输入用户 名、密码及验证码的时间肯定不会超过300秒,自然就可以正常登录。Firefox的cookie不依赖于服务器的时间,可见,FireFox是充分考虑到了服务器端与客户端的时差问题。
经过就件事,不由于联想到最近公司刚上的服务器,程序也遇到此种情况,ie有问题,Firefox没问题,而且在服务器上运行网站也没问题,后来忙,不想重装IIS,都是自己把程序改了些。勉强可以用。莫非也是服务器的时间不对,马上远程连接上服务器,一看服务器的日期:7月6日,今天明明是7月8日,原来如此,终于把这个烦人的问题的原因找到了。