posts - 45,  comments - 175,  trackbacks - 0

 昨天做Goahead Web服务器的Digest Access Authentication认证的时候,发现Web页面没有请求参数的时候,IE 6.0 FireFox都可以正常的获得页面,但一旦有请求参数的时候,FireFox就不能连接了,返回401错误。无奈之下查看Goahead的认证代码,然后就让我大吃一惊。

       Goaheadwebsda.c 中的char_t *websCalcDigest(webs_t wp)函数,里面有这么一句:

       fmtAlloc(&a2, 255, T("%s:%s"), method, wp->uri);

       当我把wp->uri 换成wp->url时,IE 6.0 不能工作,但FireFox IE 7.0可以正常的使用。差别就相当于把计算Calculate second portion of digest H(A2)得参数改变了。比如从/cgi-bin/gecac.cgi 换成了/cgi-bin/gecac.cgi?req=get_net_config。从很多方面来说FireFox都比IE的实现标准,所以这里是IE 6.0的一个BUG, Goahead为了迎合IE 6.0作出了妥协,最终导致这种情况的发生,还好MS IE 7.0中修复了这个BUG

       最终我不得不修改goahead的代码来适应IE 6.0

       a_assert(wp->userAgent);

/*

        *如果是IE6.0 需要使用 uri计算,否则使用url计算

        */

       if( strstr(wp->userAgent,"MSIE 6.0") != NULL)

              fmtAlloc(&a2, 255, T("%s:%s"), method, wp->uri);

       else

              fmtAlloc(&a2, 255, T("%s:%s"), method, wp->url);  

还有就是IE 6.0 中使用AJAX的时候内存不能及时回收的问题,也是很严重,反正问题多多,我也经不再使用IE 6.0了,可是做开发也要考虑很多人还在使用它,真是历史负担严重。

posted on 2007-09-04 15:59 天下无双 阅读(643) 评论(0)  编辑 收藏 引用 所属分类: 嵌入式技术

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:

常用链接

留言簿(10)

随笔分类

随笔档案

相册

我的其它领域Blog

搜索

  •  

积分与排名

  • 积分 - 55026
  • 排名 - 42

最新评论

阅读排行榜

评论排行榜