web-dev-qa-db-ja.com

Tomcatが400の不正な要求のカスタムエラーページにリダイレクトしていません

Tomcat 9Webサーバーが本番環境にあります。私たちが直面している問題は、Tomcatが次のような不正な形式のURLを受信した場合に、アプリケーションのカスタムエラーページを表示したいということです。

http:// URL/

または

http:// URL/[

次のようにTomcatアプリケーションサーバーのweb.xmlにエラーページタグを追加しました

<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>

また、TomcatのwebappsディレクトリにあるアプリケーションのROOTフォルダにerror.htmlがあります。

ユーザーが存在しないウェブページをリクエストしようとすると、上記の404エラーコードに正しく対応するエラーページが表示されます。

本当の問題は、ユーザーがブラウザに不正な形式のURLを入力したときにTomcatがerror.htmlにリダイレクトできないことです http:// URL/

Tomcatは、カスタムエラーページではなく、デフォルトの400の不正な要求エラーページを表示しています。

6
Pawan Patil

以下は、他の誰かの時間を節約するために https://stackoverflow.com/a/55702749/253271 に従うサンプル構成です。 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" />

静的htmlerror400.html ... errorOthers.htmlをCATALINA_BASEのwebapps/ROOTに配置します。

1
kosolapyj

あなたはあなた自身のエラーページを書くことができます https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-Valve-to-handle-errors-exceptions/

JarをTomcatlibに配置する必要があります。

0
Sam anderson

組み込みTomcatの場合:

final var Tomcat = new org.Apache.catalina.startup.Tomcat();

final var Host = (StandardHost) Tomcat.getHost();

final var errorReportValve = new org.Apache.catalina.valves.ErrorReportValve();
errorReportValve.setShowReport(false);
errorReportValve.setShowServerInfo(false);
errorReportValve.setProperty("errorCode.0", "empty.html");
Host.addValve(errorReportValve);

http://Tomcat.Apache.org/Tomcat-9.0-doc/config/Valve.html#Error_Report_Valve

https://Tomcat.Apache.org/Tomcat-9.0-doc/api/org/Apache/catalina/valves/ErrorReportValve.html

0