Paw*_*til 11 redirect tomcat bad-request tomcat9
我们在生产中有 tomcat 9 Web 服务器。我们面临的问题是,如果 tomcat 收到任何格式错误的 URL,我们希望为我们的应用程序显示自定义错误页面,如下所示
或者
我在tomcat应用服务器的web.xml中添加了error page标签如下
<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>
Run Code Online (Sandbox Code Playgroud)
我们在tomcat的webapps目录下的应用程序ROOT文件夹中有error.html。
每当用户尝试请求任何不存在的网页时,他都会收到与上面指定的 404 错误代码正确对应的错误页面。
真正的问题是当用户在浏览器中输入格式错误的 URL(如http://URL/|)时,tomcat 无法重定向到 error.html 。
Tomcat 显示的是默认的 400 bad request 错误页面,而不是自定义错误页面。
Mar*_*mas 15
这不是错误,而是配置问题。
Tomcat 9 改进了错误处理,以便将更多错误,尤其是那些在请求处理开始之前发生的错误传递给标准错误处理机制,而不仅仅是返回错误代码。
在 URI 格式错误的情况下,Tomcat 无法解析 URI,因此 URI 无法映射到 Web 应用程序。因此,Tomcat 无法触发应用程序级别的错误处理,因为它无法识别应用程序。在这种情况下,错误由可以在 server.xml 中配置的ErrorReportValve处理。
对 ErrorReportValve 的最近(ish)添加是能够以与每个 Web 应用程序错误页面配置类似的方式为每个状态代码和/或异常类型定义静态网页(即没有 Servlet 或 JSP,只有 HTML)。
示例错误报告阀:
<Valve className="org.apache.catalina.valves.ErrorReportValve"
errorCode.400="webapps/ROOT/error400.html"
errorCode.0="webapps/ROOT/errorOthers.html"
showReport="false"
showServerInfo="false" />
Run Code Online (Sandbox Code Playgroud)
以下是遵循/sf/answers/3899192461/ 的示例配置,以节省其他人的时间。在 Host 标签内的 server.xml 中:
<Valve className="org.apache.catalina.valves.ErrorReportValve"
errorCode.400="webapps/ROOT/error400.html"
errorCode.0="webapps/ROOT/errorOthers.html"
showReport="false"
showServerInfo="false" />
Run Code Online (Sandbox Code Playgroud)
将静态 html error400.html ... errorOthers.html 放在 CATALINA_BASE 的 webapps/ROOT 中。
| 归档时间: |
|
| 查看次数: |
10630 次 |
| 最近记录: |