2017-07-26 74 views
0

我有一个Spring/JSF应用程序重定向到一个新窗口中打开报告(基于LogiInfo报告工具)。在使用resp.sendRedirect(reportURL); 启动之前,已经应用了servlet过滤器来附加/修改某些参数。在我的测试环境中,此功能非常完美,所有报告都按预期启动。但是,在客户端环境中,部分报告不会启动,最终会在新窗口中显示403 Forbidden错误。经过一些调试后,我意识到URL也没有被修改,因为doFilter()本身没有被这些子报告调用(事实上Tomcat甚至没有收到这些URL的'GET'请求)。Servlet过滤器有选择地工作

(UPDATE) 两者之间的主要区别是:

  1. 测试服务器在Tomcat 7.0运行,而客户端环境上运行8.0。
  2. Web服务器是Apache 2.2的测试环境&的Apache 2.4的客户端环境

这是一个奇怪的问题,我不知道去哪里找,因为在.xhtml页绝对没有差调用这些报告或他们的JavaScript。 有关这种选择性行为为何发挥作用的任何想法?

+0

仍在调试此问题,并意识到403错误源自Apache Web服务器而不是Tomcat服务器。它的版本与测试环境不同(使用该信息更新了问题)。 – javshak

回答

0

原来是与防火墙相关的问题,与Apache或Tomcat服务器无关。它阻止了一些报告中的URL,因为它们中有单引号。