🐡
SpringBootで Request-URI Too Large が出てしまった時のメモ
環境
SpringBoot 1.5.4
Apache 2.4 (リバースプロクシとして)
問題点
フォームを GET で送信してしまうと、(これ自体が問題なんですが)
URL の文字数が 1000 文字を超えてしまうことがあります。その場合、題記のエラーが発生します。
本来は、アプリケーションを改修すべきですが、それまでの間に合わせとして設定変更で逃げる
場合の手法をメモします。
考え方
Request-URI Too Large エラーを出す所は二箇所あります。
それぞれに対して設定の変更が必要です。
1. Apache
- SpringBoot 内蔵の Tomcat
Apache の設定変更
http.conf に以下の行を加えます。
LimitRequestLine 81920
注意:この設定はメモリ使用量に直結するようです。また、長い URL をエラーにしているのは、
セキュリティ対策の部分があるようなので、設定変更時はご注意下さい。
Springboot 内蔵 Tomcat の設定変更
application.yml に以下の設定を追加します。
server.max-http-header-size: 81920
リミットの値は、Apache と Springboot 内蔵 Tomcat で合わせておくとよいでしょう。
以上です。
蛇足
そもそも、よほどの理由がなければ Form を GET するのはやめた方が無難です。
特に、データ数が可変な場合は実運用フェイズでいきなりこのエラーに遭遇するので、かなり最悪です。
Discussion