BLOGTIMES
2020/09/02

いつのまにか Tomcat で URL の [ ] がエラーになるようになっている

  tomcat 
このエントリーをはてなブックマークに追加

Tomcat のログを眺めていていつの間にか URL に [ ] が含まれると以下のようなエラーを吐いていることに気づいたので対応方法をメモ。
以前はこういうことはなかったはずなので、気づかないうちに挙動が変わっていたようです。

Sep 02, 2020 4:29:46 PM org.apache.coyote.http11.AbstractHttp11Processor process INFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 at org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:239) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:2486) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

Tomcat のバージョンはこんな感じ。

# rpm -qa | grep tomcat-7 tomcat-7.0.76-12.el7_8.noarch

Tomcat 7 の場合は 7.0.73 から?

Change Log を確認してみると 7.0.73 の以下の記載が気になるところ。

Apache Tomcat 7 (7.0.73) - Changelog

Add additional checks for valid characters to the HTTP request line parsing so invalid request lines are rejected sooner. (markt)

この直近のコミットを眺めてみると、 2016/11/2 のコミットにたどり着きます。
この中身を見るとエラーに出ているメッセージが追加されているので、7.0.73 以降にこのような挙動になっていたようです。

対処は server.xml で

対処方法としては、server.xml の Connector の定義に relaxedQueryChars*1 を足してやればいいみたいです。
Query ではなく Path の部分に使いたいのであれば relaxedPathChars も必要になります。

server.xml

<Connector port="8080" protocol="HTTP/1.1" ・・・・・・・・ relaxedQueryChars="[]|{}^\`" />

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11949
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン