Tomcat未重定向到400错误请求自定义错误页面

问题描述 投票:3回答:1

我们在生产中有tomcat 9 web服务器。我们面临的问题是,如果tomcat收到任何格式错误的URL,我们希望为我们的应用程序显示自定义错误页面,如下所示

http://URL/|

要么

http://URL/[

我在tomcat应用服务器的web.xml中添加了错误页面标记,如下所示

<error-page>
   <error-code>400</error-code>
   <location>/error.html</location>
 </error-page>
 <error-page>
   <error-code>404</error-code>
   <location>/error.html</location>
 </error-page>

我们在tomcat的webapps目录下的应用程序ROOT文件夹中有error.html。

每当用户尝试请求任何不存在的网页时,他就会正确地收到与上述404错误代码相对应的错误页面。

真正的问题是,当用户在http://URL/|等浏览器中输入格式错误的URL时,tomcat无法重定向到error.html

Tomcat显示默认的400错误请求错误页面而不是自定义错误页面。

tomcat redirect bad-request tomcat9
1个回答
2
投票

这不是错误,这是一个配置问题。

Tomcat 9改进了错误处理,以便将更多错误(特别是那些在请求处理开始之前发生的错误)传递给标准错误处理机制,而不仅仅是返回错误代码。

在格式错误的URI的情况下,Tomcat无法解析URI,因此URI无法映射到Web应用程序。因此,Tomcat无法触发应用程序级错误处理,因为它无法识别应用程序。在这种情况下,错误由ErrorReportValve处理,可以在server.xml中配置。

最近(ish)对ErrorReportValve的添加是能够以与每个Web应用程序错误页面配置类似的方式为每个状态代码和/或异常类型定义静态网页(即,没有Servlet或JSP,仅HTML)。

© www.soinside.com 2019 - 2024. All rights reserved.