天天看点

Cookie导致的悲惨的两天

上个星期,

把前段时间完成的一个Web项目,这个Web程序是通过iframe嵌套在别人的网站里面的。

【我的Web程序:http://221.130.163.8/searchandrobot/default.aspx

或者

入口网站:http://ah.10086.cn 输入搜索内容,点击进去】

在经过多人的集成测试通过,弄了一宿后,终于部署到公网。

以为一个心愿终于了结了。。。。。。

但这两天,客户不断的投诉:“输入的搜索后,根本没有效果...”

这个问题的严重性,让我不得不放下手中所有的工作,集中精力努力去定位问题,然后解决。

接下来的过程,几乎是没什么头绪,根本不知道问题出在哪,

逐渐痛苦的步骤如下:

1、我用IE6,7,8,9,火狐测试公网,一切OK,表示毫无压力

2、让家里人所有人都打开网站试一下,大部分表示OK,一切正常,

还有两个人有问题:A、IE9存在上述问题,搜狗一切正常  B、IE6存在上述问题,火狐一切正常

3、思考问题:同一个浏览器,有人可以,有人不可以,为什么?

     想到的可能情况:IE配置不同?

4、停止思考,决定使用一步一步跟踪法吧

5、但是家里环境无法模拟出这种情况【不知道如何能模拟出来】,所以只能拿现网环境、占用别人的机器来跟踪,悲剧啊

6、现网环境又不能打断点,只好改代码,记录更多的日志,重新部署,让大多数同事帮忙测试。

7、还是找不出原因。。。。。

8、思考:会不会是Http请求内容有问题?参数丢失?

9、使用firebug查看http请求包,加密后的参数解密后,一切正常

10、思考:请求没问题,难道后台有问题,但是后台就一个程序啊,为什么有人可以,有人不可以? 极度郁闷ing....

11、只好准备打印更多的alert,和更多的日志来慢慢定位了,但自己完全想不通,想不明白.....

12、但由于是现网环境,不能随便修改js,加alert语句,郁闷....

13、想到以前使用的http代理工具Fiddler,可以在线调用本地JS

14、下载Fiddler,安装Fiddler,配置,百度搜索“Fiddler调试JS”,快速浏览学习....

15、使用Fiddler,下载JS到本地,配置Fiddler,让网站调用本地JS,修改JS,加alert语句

16、发现:关键返回内容为Null

17、思考:请求没有问题,但返回内容为空,为什么?

       难道后台没有接受到,或者后台没有处理? 那同样的请求,为什么有人可以,有人不可以?

      后台都是一个,不可能有问题啊

     前台请求没问题,后台也不可能有问题,操蛋啊,郁闷啊。。。。

18、通过Fiddler继续查看Http请求包、返回包,发现请求包确实没有任何问题,返回包Content-Length为0

19、现在已经可以确定前台已经完全没有问题了,只好,也是没有办法了,看看后台代码吧

20、发现自己后台代码逻辑中:

       a、一开始会创建会话,然后把会话ID记录到Cookie中

       b、后面的Http请求进来,我先获取客户端的Cookie,检查是否存在会话Id,如果没有会话Id,我就直接返回

21、思考:难道是Cookie的问题,难道是Cookie中没记录进去? 可能性很大,看到一点希望。。。。

22、百度搜索“IE 禁用Cookie”

23、修改IE Cookie配置,将级别降到最低,输入数据,测试,1秒,2秒,正常了,KAO....

24、找到原因了,写下此篇文章,这个经验以后要记住:

【Web程序中,对于关键数据、会影响功能的数据,不要存放在Cookie中,要提前考虑用户会禁用Cookie,或者Cookie级别不足以让你的程序访问】

等这边文章写完后,接下来,就是思考解决办法.....

感谢齐树军、李梦嘉、孙海峰、罗威借电脑给我用 ,泪奔.....

继续阅读