Tomcat9及以上的ErrorReportValve类代码 - 自行反编译Tomcat8、Tomcat9此类区别
在这里插入图片描述

此方法只能在Tomcat9及以上才生效,因为Tomat8及以下在org.apache.catalina.valves.ErrorReportValve类内没有setProperty代码,故不能通过此类自定义页面


Tomcat目录/conf/server.xml == 下面两者皆可

<!--共同点
1. ErrorReportValve 中的errorCode配置仅支持Tomcat8+版本
2. 400页面不进入webapps具体的项目目录、这很重要,即使你地址中有项目文件夹的名字,如下面400链接
        http://127.0.0.1:8080/docs/config/xxx?fol=c:\\iu
3. 500、404如果匹配到wenapps里面的项目目录,会进入到里面,故可以使用errorCode.404="/404.html",开头斜杠表示webapps下具体里面项目目录,如下面的404链接
      http://127.0.0.1:8080/docs/a  开头斜杠表示 Tomcat目录/webapps/docs目录
      http://127.0.0.1:8080/test 没有找到 开头斜杠则默认使用/webapps/ROOT目录
4. 不加斜杠表示:Tomcat目录
<!--第一个  404页面需在每个webapps各项目里面添加404.html【放多份】-->
<!--<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" errorCode.400="webapps/404.html" errorCode.404="/404.html">
		</Valve>		-->
<!--第二个  404页面仅需在webapps下放个404.html页面即可【放一份】-->        
        <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" errorCode.400="webapps/400.html" errorCode.404="webapps/404.html">
		</Valve>

方式2:Tomcat8不支持全局配置400 - web.xml


Tomcat目录/conf/web.xml

   <error-page>
		<error-code>404</error-code> <!--错误码-->
		<location>/404.html</location> <!--相对webapps/xx目录-->
	</error-page>
1. http://127.0.0.1:8080/examples/a  404页面
404访问路径:webapps/examples/404.html
2. http://127.0.0.1:8080/test  404页面
无webapps/test目录则访问
webapps/ROOT/404.html
                    方式1:仅Tomcat8+才支持Tomcat9及以上的ErrorReportValve类代码 - 自行反编译Tomcat8、Tomcat9此类区别此方法只能在Tomcat9及以上才生效,因为Tomat8及以下在org.apache.catalina.valves.ErrorReportValve类内没有setProperty代码,故不能通过此类自定义页面 Tomcat目录/conf/server.xml == 下面两者皆可&lt;!--共同点1. ErrorReportValve 中的e
大家可以看下,这是我按网上的步骤搞的,把错误页面放到了ROOT页面下,然后去测试,结果如下:
看到没,是404,但是我的自定义页面并没有出来。所以正确的过程应该:
首先我们要理解下,/error404.html指的路径是我们项目的路径,而不是ROOT的...
				
Tomcat版本号和报错信息隐藏(修改配置文件方式) Tomcat的报错页面通常会携带Tomcat的版本号以及详细的报错信息,这些信息的暴露属于系统信息泄露的安全风险,需要进行安全风险修复。 如图所示: 网上现存的大部分方法是通过修改catalina.jar里面的ServerInfo.properties配置文件中的配置项来进行版本隐藏,这样的方式未免太过麻烦了点,于是通过研究发现了另一种比较简单的修复方案,然后发现网上好像并没有相关的记录,于是想在此分享一下。 具体配置方法为: 在conf/server
Tomcat 400报错显示tomcat信息,这就存在着很大的安全隐患。 根据官网给出的方案需要重写ErrorReportValve处理400错误跳转到自定义页面,首先需要更改tomcat中的server.xml文件,在host中添加Valve,页面将不显示错误的详细信息。 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className...
问题描述:在Tomcat配置https后出现了404错误。 回答:可能原因是在Tomcat的https配置中出现了错误。建议仔细检查证书和配置文件等是否正确,并且查看Tomcat日志文件以了解更详细的错误信息。 ### 回答2: 在进行 Tomcat 配置 HTTPS 时,报错 404 可能有多个原因。下面提供一些可能的解决方案: 1. 检查 SSL 证书是否正确 在使用 HTTPS 时,需要使用 SSL 证书来进行加密通信。如果证书不正确或者过期,Tomcat 就无法正确识别 HTTPS 的请求,从而导致 404 报错。在这种情况下,需要检查 SSL 证书是否正确,并重新生成证书或更新证书。同时,还需要检查证书是否已经安装到 Tomcat 的 keystore 中。 2. 检查 Tomcat 配置是否正确 在使用 HTTPS 时,还需要正确配置 Tomcat 的 server.xml 文件。可以检查配置是否正确,或者使用 Tomcat 的默认配置文件进行测试。如果配置错误,可能会导致 Tomcat 无法接收 HTTPS 请求,从而出现 404 报错。需要检查以下几个方面: (1) Connector 参数是否正确:需要检查 SSL 协议版本、端口、密钥库、证书等参数是否正确配置。 (2) SSLHostConfig 参数是否正确:需要检查对应的 host 和域名是否正确配置。 (3) Context 参数是否正确:如果是在 Web 应用中使用 HTTPS,需要在 Context 中添加正确的安全传输参数。 3. 检查防火墙设置是否正确 如果 Tomcat 安装在防火墙后面,需要正确配置防火墙允许 HTTPS 的访问。如果防火墙配置错误,可能会导致 HTTPS 请求无法正确到达 Tomcat,从而出现 404 报错。需要检查防火墙的设置,确保 HTTPS 请求可以到达 Tomcat。 4. 检查域名解析是否正确 如果使用域名进行 HTTPS 访问,需要确保域名解析正确。如果域名解析错误,可能会导致 HTTPS 请求无法正确到达 Tomcat,从而出现 404 报错。需要检查域名解析的设置,确保可以正确解析到 Tomcat 对应的 IP 地址。 总之,在出现 HTTPS 报错 404 时,需要逐一排查以上可能的原因,并进行相应的解决方案。同时,可以查看 Tomcat 的日志文件,以了解更多的错误信息,从而更快地找到问题所在。 ### 回答3: Tomcat是一个常用的Java Web服务器,支持通过HTTPS进行安全通信。但是,在配置Tomcat的HTTPS时,有可能会出现404错误的情况。造成这种错误的原因有很多,可能是证书配置问题、Tomcat本身的配置问题、网络问题等。下面,我们将分别从这些方面来探讨如何解决Tomcat配置HTTPS报错404的问题。 1. 证书配置问题 HTTPS可以通过SSL证书来实现安全通信。因此,证书的配置是否正确是影响HTTPS是否可以正常工作的关键因素之一。通常,我们需要为Tomcat生成一个自签名证书来使用HTTPS。如果证书的生成或配置不正确,可能会导致Tomcat无法正常工作。 解决方法:检查证书的生成和配置是否正确。可以尝试重新生成证书或者使用已有的可信证书来进行配置。 2. Tomcat本身的配置问题 Tomcat配置HTTPS时,需要对服务器本身和应用程序进行相应的配置。如果Tomcat配置不正确或者与应用程序不匹配,也会导致HTTPS无法正常工作。 解决方法:检查Tomcat配置是否正确,确保与应用程序相匹配。可以尝试重新配置Tomcat或者调整应用程序的配置。 3. 网络问题 HTTPS的工作方式需要通过SSL/TLS协议来保证数据的安全性,同时也要求网络环境具备一定的条件。如果网络环境不稳定或者存在防火墙等限制,也会导致HTTPS无法正常工作。 解决方法:检查网络环境是否符合要求,确保网络稳定且没有被限制。如果需要,可以对网络进行相应的配置。 总之,Tomcat配置HTTPS报错404的问题可能会涉及多个方面,需要仔细排查。可以依据上述解决方法进行相应的调整和修复,确保Tomcat可以正常使用HTTPS进行安全通信。