暂时不用标题

暂时无子标题
随笔 - 25, 文章 - 1, 评论 - 181, 引用 - 0

导航

<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(3)

随笔档案

文章档案

相册

搜索

最新评论

阅读排行榜

评论排行榜

除虫记之十四:一个空格

除虫记之十四:一个空格

我们的产品在很早的版本中采用了全新的登陆模式,使用http协议解决了原来有些网络不能登陆的问题,相关代码可以说久经考验,除了本地防火墙阻拦外,我们还没有发现不能登陆的情况。

但前两天,客服告诉我,XXX新闻办公室的领导们使用IG不能登陆了。原来我们公司在那儿做一个项目,顺便向他们的大小头头们推荐了我们的产品,各个领导对我们的产品很感兴趣,尤其是新闻订阅,经常使用这个功能。但不知什么原因,突然不能登陆了。客服的部门经理在mail中强调了他们处于政府的要害部门,影响力不比一般,并且把mail抄送给了公司老总。老总批示从快处理。

切,怎么可能不能登陆呢?我们还没有遇到这样的网络环境呢。仔细询问,并且让他们和新闻办的技术人员做了沟通,第二天回复说,他们的网络做了改动,做了新的防火墙,他们说可能是这个原因,但他们也说了,有的能登陆。

想了想,部门内所有人的开发都很紧张,耽误不得,还是亲自去吧。

和那边做项目的部门经理做了沟通,打车过去。晕,真是不一般,第一次来这样的地,各种国家机器一应俱全。登记后,让里面的人接进去。

简单沟通后,了解到,他们的网络有两种环境,一个是境内线,一个境外线,其中境内线是可以登陆的,境外线在改防火墙前也是可以登陆的,改了防火墙后就不能登陆了。

在一个处长的工位上测试了一下,果然是不能登陆,看样子是登陆过程中http提交超时。把数据拷贝到IE地址栏里面,靠,竟然可以登陆。ft,哪儿出了问题?

肯定是我们代码中的http协议实现有地方不标准。

他们的境外线除了各人用的就会议室里有一个,刚好里面有人在开会,等他们开完会,进去配好网络。在带日志模式下运行登陆,肯定是超时报网络出错;启动Ethereal,然后用IE登陆,抓包。

比较两个http数据包,发现很多不同,我们代码中采用Post协议,只添了一些必要的字段,IE采用Get协议,所有该有的字段可能都有了。

这就好办了,只需逐个的添加就知道怎么回事了。才做了这些工作,陪着我的我们公司同事,一个相当漂亮的女孩告诉我去吃中午饭,她给我要了一份午餐。不错,去考察政府的大锅饭什么档次。

午饭一般,10元的餐票,2个菜几两米。

回来在代码中把其他没有的字段一个一个的添加、编译、测试,要晕了!一路折腾下来,竟然都不成功!哪儿出了问题?难道协议不对?

换成GET方法,哈,就听硬盘声音不一样了,啊哈,成功了!ft,难道只有GET才放行?

重又用POST方法测试了几种情况,皆不成功,遂武断的做了不支持POST方法的决定。

打道回府,和张义臣讨论这个结论。张说不可能,如果这样,很多网页都不能浏览的,比如mail等。

他简单写了一个form,用POST方法把我们的数据提交,让我再去那个环境下做一次测试。

唉,厉害呀,如果我对HTML熟悉的话,在那儿直接做这个测试好了,就不用再跑一趟了。可惜不熟悉!

决定第二天再去一次。

联系了那个美女,约好一同去XXX新闻办。

到了那儿,立刻做了测试,我靠,真的可以耶~~~~,用Ethernet抓包,POST方法,各个字段正常。

这好办了呀,再重新对比这个数据包,修改我们的代码,所有的字段挨个的比较、编译、运行。
ft,一路下来,还是不行。

比较数据,瞪的我眼睛直冒火!

把自己的包抓下来,和IE的包比较,发给张,帮我比较。
他指出了几处不同,修正了,还是不行。

要晕了!

直至最后,数据上已经完全一样了,连大小写都一样了,还是不行。
tnnd,到底出了啥问题了?

后来,又发现一处不同,在Content-Length字段后面,我们的包是直接添的长度93,而IE在冒号后面加了一个空格又添的长度93。

难道这也有问题??

修正,编译,运行!

真够日的,通了!!!!!!!!!!!

这防火墙真TMD变态!难道就差这个空格?

遂把代码恢复到最初状态,只修改这个空格。通了!

天哪,真的是只差这个空格!这够日的防火墙,这不是要人命嘛!

唏嘘感慨一番,检查代码中所有相关的POST协议,都严格的加了空格,连大小写都不敢马虎!

教训:有的防火墙是有点变态,不过代码如果绝对规范标准,也是应该的!

 


 

posted on 2006-08-17 23:43 糖水煎包 阅读(3303) 评论(8)  编辑 收藏

评论

# re: 除虫记之十四:一个空格

hehe, “比较数据,瞪的我眼睛直冒火!”难道你直接用眼睛看的吗?-_-!,那比较累,为啥不使用个比较工具呢,即使是UE也好啊。

其实只差一个空格不放行说不定也是优点:这样比较严格嘛 :P
2006-08-18 08:13 | 晓寒

# 防火墙怎么会管这个?

呵呵,你看看哪个防火墙的规则里会对http内容作检查的?
2006-08-18 08:52 | jzhang

# re: 除虫记之十四:一个空格

你的文章非常精彩,秀逗邀请您加入秀逗博客联盟.中国最大最专业的博客推荐联盟,秀逗博客联盟不截取流量,推荐后的文章指向作者本人的BLOG,文章24小时循环首页展示,真正意义上迅速提升你的博客流量!欢迎注册,注册后将推荐代码添加到自己的BLOG相应位置即可轻松推荐文章,让更多人分享你的文章!后期更有秀逗市场、同心琐秀、商业联盟以及社区陆续登场,更多娱乐功能、商业展示机会,完全免费使用,名人博客,不用再眼红,使用秀逗推荐,流量迅速上升,好的博客,秀逗为您宣传!地址:http://www.sodooo.com
2006-09-06 13:37 | sds

# re: 除虫记之十四:一个空格

一楼说的不错,Ethereal的包可以导出然后,使用BC,哈哈........
2006-12-15 21:11 | dsf

# re: 除虫记之十四:一个空格

虫子真多!
2007-02-01 16:51 | 网络电话

# re: 除虫记之十四:一个空格

呵呵,前些天我写 HTTP 的程序也遇上这个问题了,直接拔号一点问题没有,拿到公司居然不行,NND调了两天终于发现是公司防火墙的问题,还是第一次碰上这种问题,不知道是哪家的产品,唉,对HTTP协议它居然按代理处理,连接任意IP的80端口都可以连接上,实现并没有连接,而是防火墙给的连接成功。
最后查明是在 Host 字段多了个空格,

这个防火墙在每个HTTP请求的回应里都会加上一条 Via:1.1 GWBJ01
NND,国产货,唉…………
2007-04-02 10:58 | bbc

# re: 除虫记之十四:一个空格

这个好像不是防火墙的错吧
其实防火墙穿透有其他比较好的方法实现
考虑你是做流氓软件的就不说了
2007-05-20 19:17 | bs流氓软件

# re: 除虫记之十四:一个空格

好东西,谢谢分享
2008-05-27 12:01 | 网络跳线
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]