トラブルシューティング

最終更新日: 2023年3月9日
R8 | R9

URLエンコード

使えない文字

Q. Wagby の REST API へアクセスしたとき、次のようなエラーが生じる場合があります。

org.apache.coyote.http11.Http11Processor.service 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.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:479)
          at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:684)
          at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
          at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
          at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
          at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
          at java.base/java.lang.Thread.run(Thread.java:835)

A. アクセスする際のURLのパスに "[", "," "]", "|" などの文字が含まれていると発生します。これらはURLやHTTPヘッダに使えない文字となります。

URLのクエリ部分にはアルファベット,数字,"-",".","_","~" が使用できます。これ以外の文字を送信する場合はURLエンコードを行うようにしてください。

RequestRejectedExceptionが発生する

リクエスト文字列にURLエンコードした文字列を含む場合、Wagbyが内部で採用しているセキュリティフレームワーク Spring Security の HTTP ファイアウォール機能がエラーと判断することがあります。次のエラーメッセージが記録されます。

The request was rejected because the URL contained a potentially malicious String

例えばURLエンコード文字列にパス内の "%2e" (エンコード前の文字は半角ピリオド) が含まれている場合、これをパストラバーサルと検知し、拒否するというものです。半角ピリオドや、連続したスラッシュ文字列 "//" が該当します。

このように一部の文字は利用できない場合があります。