posts - 45,  comments - 232,  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 天下无双 阅读(1153) 评论(3)  编辑 收藏 引用 所属分类: 嵌入式技术

FeedBack:
# re: IE 6.0中Digest Access Authentication的BUG
2009-05-16 22:31 | jinjing
你好
我现在在做goahead web的DAA,用它里面自带的用户程序,添加了组,用户,和url的访问权限以后,现在打开页面时候还是不能出现让用户输入用户名和密码的登陆页面而是直接打开网页,不知道是怎么回事。
能不能帮帮我,谢谢!  回复  更多评论
  
# re: IE 6.0中Digest Access Authentication的BUG
2009-06-19 17:38 | 猴子
@jinjing
可能是文件路径不对。  回复  更多评论
  
# re: IE 6.0中Digest Access Authentication的BUG
2009-06-26 12:01 | 风火2009
你好!我现在也在做goahead web!请问在嵌入式下的基于goahead web的cgi你是怎么实现的呢?请赐教!  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿(15)

随笔分类

随笔档案

相册

我的其它领域Blog

搜索

  •  

积分与排名

  • 积分 - 203929
  • 排名 - 129

最新评论

阅读排行榜

评论排行榜