您的位置:首页 > 其它

一个BUG显示了IE7和IE6解析URL中中文参数能力的不同

2008-08-05 21:56 477 查看
上月终于把系统开发完,急急忙忙投入测试
在测试时出现了一个很奇怪的问题,在IE7的机子上系统运行一切正常
但到了IE6的机子上却会报告用户非法进入
报告非法是出于这样一种原因:
公司为了防止内部数据泄露,是用网页对话框的形式进行数据查看的,防止用户将客户资料拷贝走
但这样就会有一个问题,假如有权限的用户知道了该网页的URL地址
那么就可以在IE浏览器里输入地址访问,从而查看网页源文件
解决方法是在用户登陆到主页后,每打开一个新的页面前都会使用随即函数产生一组随机数
将这个随机数放入Session,并且加入新打开页面的URL参数中
新页面打开时会将URL参数中的随机数与Session里的对比,假如两个随机数不一样,就拒绝用户访问
那么为什么会在IE7的测试机器上一切正常,在IE6的机器上就会产生被拒绝访问呢(全部是合法操作的)
当时百思不得其解,因为只有判断URL的方法会抛出“非法访问”的异常,所以一直在这个方法上纠缠
后来还是带我的同事在调试了半天下找到了原因
是因为URL穿参时所有参数值可能包括中文的都必须使用Server.UrlEncode进行编码
我有几个网页传参比较多,其中有一个传Title的参数就忘记了对其进行编码
正好这个参数在随机参数之前,在没编码的情况下参数值如果是中文的话IE6解析就会出错,从而导致后面的随机数也跟着出错
抛出了用户非法访问的异常,而IE7却可以解析中文URL,所以一切正常
起因很简单,就是我少写了一个方法,找原因时又总想着IE7和IE6的不同
要不就是在URL检查方法上找,因为我的机器是IE7,所以没办法堆栈跟踪
自己粗心大意的毛病至今没改,程序一出错就堆栈跟踪,依赖惯了,当系统真正交给用户测试时
用户的机器上是不可能有源代码和Visual Studio的,根本没办法堆栈跟踪
必须手工显示出一个个变量在用户机器上测试
感觉自己在经验、应变和细心等方面还是有些不足。
   
最近“北京欢迎你”的视频在网上很火,确实非常好听,明星又多,呵呵~~~
网上的都不太清楚,我有高清晰版本的,想要的准备请我吃饭哈,哈哈~~~


 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐