【问题标题】:Custom error page in tomcat for HTTP 501 errorTomcat 中针对 HTTP 501 错误的自定义错误页面
【发布时间】:2021-04-15 02:42:26
【问题描述】:

在其他任何事情之前,我已经阅读了所有那些说我在我的应用程序或 tomcat 的 conf/web.xml 中放置一个错误页面块并在里面添加一个带有相应位置的错误代码块的解决方案,而那些没有t 工作(那些 404 错误和那些工作)。

我已经在我的应用程序和 tomcat 的 web.xml 中做了什么:

<error-page> <!-- this worked -->
    <error-code>404</error-code>
    <location>/pageNotFound.html</location>
</error-page>

<error-page> <!-- this did not work -->
    <error-code>501</error-code>
    <location>/pageNotFound.html</location>
</error-page>

我使用的是 Tomcat 8.5.63,目标是在出现 501 错误时删除响应中的“Apache Tomcat/8.5.63”部分。

我想删除这部分: tomcat error response page

我测试的方式是使用渗透测试工具(我正在使用 burp 套件社区)拦截请求并修改请求以包含 Transfer-Encoding: cow 标头(是的,我知道标头无效)。

关于如何实现自定义页面以便正确处理 501 的任何想法?

【问题讨论】:

    标签: tomcat8 http-error


    【解决方案1】:

    您声明的错误页面用于两种情况:

    允许开发人员自定义返回给 Web 客户端的内容的外观 当一个 servlet 产生错误时,部署描述符定义了一个错误列表 页面说明。该语法允许通过以下方式返回资源的配置 当 servlet 或过滤器 调用 sendError 以响应 特定的状态代码,或者 servlet 生成异常或传播的错误 到容器。

    Servlet 4.0 Specification,第 10.9.2 节)

    在您的情况下,错误在 HTTP 请求本身的处理过程中发生得更早。因此,您需要修改服务器的配置 (server.xml) 并添加自定义 ErrorReportValve(参见 documentation)。如果您只想省略服务器的版本字符串,只需添加:

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

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 2011-03-26
      • 2011-05-19
      • 2011-06-07
      • 2013-04-05
      • 2011-02-28
      • 2016-01-17
      • 2016-12-03
      • 2011-06-05
      相关资源
      最近更新 更多