※参考にさせて頂いたサイト
https://www.ietf.org/rfc/rfc2396.txt
https://sun0range.com/information-technology/request-rejected-exception
Spring Security には Http Firewallが実装されており、URIに不正な特殊文字(/ や % など)が含まれていると自動的に拒否するようになっている。
RFC 2396 で定義されている正規のURIではないもの拒否している。
以下のようなURIを作成すると、RequestRejectedExceptionが起きてしまう。
※ユーザが入力した文字をURIに使用したりすると起きる。
URL: ~ /test/index/{path}
対策として、以下の2点がある。
①ユーザが入力できる文字を制限する。→ バリデーションを作成する。
②クエリで送る。
Spring Security の Http Firewall は、contextPath と URI に かかっている処理。
クエリには Http Firewall はかかっていない。