2012-07-18 35 views
1

我们有一个具有内置搜索功能的Web应用程序,我们的用户可以执行复杂的搜索。下面是我们的软件栈:浏览器/ jQuery代理错误

  • 服务器端是Spring MVC的使用Struts/JSP中的视图
  • 客户端JS库是纯jQuery和jqGrid的对表
  • 的Web应用程序打包成一个WAR和部署到Tomcat 6.0.35容器
  • 的Apache 2.2.22 Web服务器是一个反向代理,供应我们的JS(我知道这是不是真的有必要,但这样的项目是如何交给我们,而不是我们的设计!)
  • 后端搭建&由另一个团队维护,但使用SOLR和Oracle f以上

文本搜索功能描述当用户约30秒后进行“广泛”的查询(查询未定向井和要求SOLR真正突突),他们得到的是简单地读取屏幕上的错误信息“代理错误”。显示该错误消息而不是显示搜索结果的正常jqGrid表。

我已经完成了项目中每个文件的全文搜索,找不到这个短语,也没有“Proxy”,也没有“proxy”。

90%的时间在IE8和IE9中发生这些神秘而难以捉摸的“代理错误”,尽管偶尔会发现它们出现在FireFox中。

由于在我们的代码库中没有找到该字符串(或任何类似的字符串),所以它必须来自这些第三方依赖关系之一,并以搜索结果的形式返回给用户。

有没有人见过这些技术的任何行为像这样?这可能是浏览器以某种方式注入DOM的东西吗?我在这里呆滞,时间不够了。

+1

可能是'504 Gateway Timeout' - [服务器充当网关或代理服务器,没有收到来自上游服务器的及时响应。](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes# 5xx_Server_Error) – Wolfram 2012-07-18 13:00:31

+0

谢谢〜Wolfram(+1) - 这是一个有趣的前景,我肯定会检查出来,但是这怎么解释IE8和IE9对这个错误的特殊关联性(就像我说的90%或更多的时间两个浏览器发生,同时,对于相同的搜索FF和Chrome都很好)。 – IAmYourFaja 2012-07-18 13:02:53

+0

不知道,但我遇到了很多'502'(不是'504')问题寻找这个。可以帮助你调查。 – Wolfram 2012-07-18 13:09:21

回答

0

50x绝对来自Apache。检查httpd.conf - 您可能有超时定义,如Timeout=blah。如果定义了该属性,那么当Apache将请求转发给Tomcat时,如果Tomcat花费的时间超过blah来响应Apache失败的速度很快,并向客户端返回50x,则将“Proxy Error”注入响应正文中。

只需删除此超时设置,这会导致现代版本的Apache无限期地等待。至少你不会得到代理错误,尽管不能保证Tomcat会向Apache返回任何东西。