QijMo

导航

[原创]Cookie太大导致页面无应答的问题

出现的问题:

上个月,有朋友负责的站点在域名变更(变更后的域名比变更前更长)后,出现了个别用户在登录时失败的情况。他确认在升级域名前后,程序和服务器的配置都没有变更过,环境如下: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就出错了

 

以上是真实项目过程在遇到的问题,希望能帮助到大家。谢谢

 

--------------------

转载请注明出处

 

 

posted on 2010-07-19 12:16  V阿莫  阅读(2896)  评论(11编辑  收藏  举报