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


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