Cookie太大导致页面无应答的问题
2010-09-30 22:43:59 来源:WEB开发网出现的问题:
上个月,有朋友负责的站点在域名变更(变更后的域名比变更前更长)后,出现了个别用户在登录时失败的情况。他确认在升级域名前后,程序和服务器的配置都没有变更过,环境如下:Windows Server 2003,IIS6,ASP.net 2.0
出现的现象:
1、个别用户登录时服务端无应答
2、查询IIS的日记,发现日记显示是应答http 200正常
3、通过服务端和客户端捉包,发现服务端没有应答包到客户端
解决过程:
google,baidu了半天,没找到相关问题的解决方法。通过以上现象,同时在客户端使用HttpAnalyzer软件捉取能正常登录用户的包,发现在用户登录后,服务端会写入10多个cookie,包括用户加密后的一些个人资料(如上次登录时间、登录IP等一些个人配置资料),初步怀疑是由于IIS写入Cookie时有问题,因为域名升级后比原来的长,导致cookie的大小变大了。
查询RFC2965协议,发现 在5.3节有对cookie限制的描述:合计300个cookies,每个域名20个cookies,每个 cookie(含名称、值、有效期等)4096字节。但比对了系统写入的cookie大小,也差不多有2900个字节,离规定好像还比较远,找不到其它原因也只能试一下减少cookie了,于时去掉了两个没有什么用处的cookie再试,问题就解决了。
总结:
1、好像在IIS6下特定环境下就会出现这个问题,因为当时整个项目有10多台Web服务器做了F5,但只有2台出现这个问题。针对这个问题,我在 IIS7下也进行了一下测试,发现当Cookie的大小达到30000多字节时,就会出现有应答为200的包,但应答的内容为空,在IE上显示为“ Internet Explorer cannot display the webpage ”,所以具体能使用cookie有多大,IIS6和IIS7下标准不一。
2、建议不要将用户配置等过大的信息写入cookie,搞不清楚什么时候IIS就出错了
以上是真实项目过程在遇到的问题,希望能帮助到大家。谢谢
更多精彩
赞助商链接