如何解决tomcat 中针对 HTTP 501 错误的自定义错误页面
在其他任何事情之前,我已经阅读了所有那些说我在我的应用程序或 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
我测试的方式是使用 pentest 工具拦截请求(我使用 burp 套件社区)并修改请求以包含 Transfer-Encoding: cow
标头(是的,我知道标头无效).
关于如何实现自定义页面以便正确处理 501 的任何想法?
解决方法
你声明的错误页面有两种情况:
允许开发人员自定义返回给 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。