禁用 Tomcat 错误页面中的堆栈跟踪,以使其准备好投入生产

禁用 Tomcat 错误页面中的堆栈跟踪,以使其准备好投入生产

我在 AWS 上运行 Tomcat。问题是,当请求因异常而崩溃时,Tomcat 不仅会发送 503,还会以 HTML 格式发送异常的堆栈跟踪。这会将我的源代码暴露给不需要查看它的查看者。

我该如何禁用此功能?

答案1

错误页面由一个简单的错误处理程序生成,错误报告阀。您可以通过将以下行添加到部分来隐藏堆栈跟踪(showReport)以及服务器信息:server.xmlHost

<Valve className="org.apache.catalina.valves.ErrorReportValve"
    showReport="false" 
    showServerInfo="false" />  

另一个解决方案是使用自定义、用户友好的每个 HTTP 错误代码的错误页面

<error-page>
    <error-code>500</error-code>
    <location>/error500.jsp</location>
</error-page>

以及每一个不同的Throwable

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error-Exception.jsp</location>
</error-page>

<error-page>
    <exception-type>java.sql.SQLException</exception-type>
    <location>/error-SQLException.jsp</location>
</error-page>

相关内容