有关HTTP 返回200状态码 没有返回数据的小问题。
2013-10-13 05:00
381 查看
记录一下
前不久,公司网站验证百度的统计工具时,发现无法验证成功,是各种找问题。后找了一人,在他的带领下发现问题所在。
首先是网站首页和二级目录的页面都无法验证代码,提示无法访问目标服务器,或目标服务器拒绝。但是奇葩的是三级目录下面的所有页面可以验证到代码存在。
将首页只保留验证代码也无法检测到。
首先,打开网站的访问日志。然后清空日志,再在百度统计页面点击验证网站发出请求,然后查看访问日志里面的记录
然后在根目录下建立个test文件夹用来做测试,建立一个test.htm 的文件,将验证代码copy。然后验证,发现可以验证到代码的存在,然后将文件改成test.html发现无法验证。
看了下网站的web.xml的配置 查找过滤器过滤.html的配置。查找后发现是这个有问题
发现这个是HTTP1.0的协议 其他HTTP 1.1的可以。开始怀疑是HTTP1.0的问题。然后抓了个包分析了下。百度的请求是基于HTTP1.0协议里面没有Accept Encoding 。
然后在源代码中找到过滤器中对于Accept Encoding 的设置和处理 发现了一个问题
代码里面对于encoding为空没有判断为NULL 做处理。找到问题所在。解决。OK.
最后发现这个GZIPFILTER的代码出处。JSP Filter,GZIP压缩响应流
最后,建议不能随意COPY别人的代码。即使COPY 也要检测一下代码的健壮性。
前不久,公司网站验证百度的统计工具时,发现无法验证成功,是各种找问题。后找了一人,在他的带领下发现问题所在。
首先是网站首页和二级目录的页面都无法验证代码,提示无法访问目标服务器,或目标服务器拒绝。但是奇葩的是三级目录下面的所有页面可以验证到代码存在。
将首页只保留验证代码也无法检测到。
首先,打开网站的访问日志。然后清空日志,再在百度统计页面点击验证网站发出请求,然后查看访问日志里面的记录
Line 1432: 111.206.36.146 - - [08/Oct/2013:17:33:20 +0800] "GET / HTTP/1.0" 301 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" Line 1433: 111.206.36.18 - - [08/Oct/2013:17:33:20 +0800] "GET / HTTP/1.0" 200 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
然后在根目录下建立个test文件夹用来做测试,建立一个test.htm 的文件,将验证代码copy。然后验证,发现可以验证到代码的存在,然后将文件改成test.html发现无法验证。
看了下网站的web.xml的配置 查找过滤器过滤.html的配置。查找后发现是这个有问题
<filter> <filter-name>GZipFilter</filter-name> <filter-class>gzip.GZipFilter</filter-class> </filter> <filter-mapping> <filter-name>GZipFilter</filter-name> <url-pattern>/*.html</url-pattern> </filter-mapping>
发现这个是HTTP1.0的协议 其他HTTP 1.1的可以。开始怀疑是HTTP1.0的问题。然后抓了个包分析了下。百度的请求是基于HTTP1.0协议里面没有Accept Encoding 。
然后在源代码中找到过滤器中对于Accept Encoding 的设置和处理 发现了一个问题
private static boolean isGZipEncoding(HttpServletRequest request){ 39. boolean flag=false; 40. String encoding=request.getHeader("Accept-Encoding"); 41. if(encoding.indexOf("gzip")!=-1){ 42. flag=true; 43. } 44. return flag; 45. }
代码里面对于encoding为空没有判断为NULL 做处理。找到问题所在。解决。OK.
最后发现这个GZIPFILTER的代码出处。JSP Filter,GZIP压缩响应流
最后,建议不能随意COPY别人的代码。即使COPY 也要检测一下代码的健壮性。
相关文章推荐
- 解决AJAX返回状态200没有调用success的问题
- http请求时没有返回的状态码问题
- 解决ASP中http状态跳转返回错误页的问题
- 解决c# httpClient进行PostAsync()后返回数据中文乱码问题
- HTTP 返回的状态码 != 200 ,浏览器不会将返回的内容缓存到本地磁盘上
- 有关绑定没有数据显示的问题
- 关于ionic app $http.get()无法请求,导致页面没有数据的问题
- jsonp跨域问题【主要解决的是返回状态码是200,但是js脚本仍然是执行error模块问题】
- Javascript 中采用AJAX异步请求数据出错问题(没有搞清readystate几个状态)
- AJAX返回状态200没有调用success
- SQL Server自定义函数进行模糊查询返回表类型没有数据的问题
- Spring学习笔记(三十四):关于http的get请求返回的数据过长问题
- 404错误页面返回200状态码问题解决
- java处理http发送的数据转化为json格式并返回遇到的问题
- SpringMVC项目使用@ResponseBody返回application/json格式的数据出现状态码HTTP Status 406
- android sqlite cursor 没有返回数据,资源占用问题
- 【转】win2008 中iis7设置404页面但返回状态200的问题解决办法
- java实现发送HTTP的POST请求,返回数据以及请求状态
- “数据提供程序或其他服务返回 E_FAIL 状态” 的问题
- mysql select count(filed) 问题(where条件没有数据匹配的话也有数据返回)。