首先简单介绍下测试的产品:该产品为CS结构,由2个窗口组成,其中B窗口嵌入了ie,用它来访问网页。
某同事反应使用我们的产品,在B窗口中点击某页面的“标签”字段后,后续的搜索结果页面无法显示。然而在自己和其他同事的机器上都没有该情况出现,请同事做如下操作:
第一步,请该同事在ie中访问同样的页面,点击“标签”字段后发现同样不能显示页面。使用httpwatch抓包,发现返回的http状态码为403,于是可确定不是由于页面项(js,css)加载顺序以及操作系统/IE版本等导致搜索页无法显示,因为403表示:"(禁止) 服务器拒绝请求。"
第二步:请同事在cmd窗口ping 搜索CGI的域名,能成功收到应答。
第三步: 请同事使用firefox访问同样的页面,点击“标签”能成功进入后续的搜索页面。结合“步骤二”可判定server端没有禁止同事机器的访问。ie下不能访问搜索页面,可能是包头中存在特殊字符串导致。
第四步: 请同事把httpwatch中抓到的user-agent字段的值copy出来,发现里面有”baiduxxx“的字段。
至此,找到问题产生的原因。由于搜索cgi所在的apache配置了禁止baidu,google等爬虫的访问,但对爬虫关键字的过滤采用了模糊匹配,而该同事正是由于安装了“百度硬盘搜索”,使得user-agent中增加了“baiduXXX”的字样。让开发修改过滤规则为完全匹配后,问题解决。
可见,了解http请求响应码的含义能够更准确的定位问题所在
本文通过一个具体案例,详细解析了遇到HTTP状态码403(禁止)时的排查过程。从用户代理user-agent字段发现问题源头,即由于特定软件安装导致的访问被禁问题,并最终通过调整服务器配置解决了该问题。
4368

被折叠的 条评论
为什么被折叠?



