発生バージョン・改修ID・修正バージョン
発生Ver | 改修ID | 修正Ver |
Kapplet 11.1 Kapplet 11.3 Kapplet 11.4 |
2162649 |
事象
Kappletを操作してKappletsやテンプレート画面を表示すると、”HTTPステータス 400 – Bad Request”のエラーメッセージが記載されたポップアップが表示されます。
このポップアップが表示されると読込不全となり、kappletやテンプレート、ロボットが選択できなくなります。
エラーメッセージ
以下、エラーメッセージ例となります。
<!doctype html><html lang="ja"><head><title>HTTPステータス 400 – Bad Request</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTPステータス 400 – Bad Request</h1><hr class="line" /><p><b>タイプ</b> 例外報告</p><p><b>メッセージ</b> リクエストヘッダが長すぎます</p><p><b>説明</b> サーバは、クライアントエラー(例えば、不正なリクエスト構文、無効なリクエストメッセージフレーミング、または不正なリクエストルーティング)であると考えられるために、リクエストを処理できない、または処理しません。</p><p><b>例外</b></p><pre>java.lang.IllegalArgumentException: リクエストヘッダが長すぎます org.apache.coyote.http11.Http11InputBuffer.parseHeaders(Http11InputBuffer.java:618) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:524) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Unknown Source) </pre><p><b>注意</b> 原因のすべてのスタックトレースは、サーバのログに記録されています</p><hr class="line" /><h3>Apache Tomcat/8.5.55</h3></body></html>
原因
Kappletから送信される情報(リクエスト)には選択中のワークスペースの情報が全て連結してつながっているため、
ワークスペースの数が多いと「java.lang.IllegalArgumentException: リクエストヘッダが長すぎます」というエラーメッセージが表示されます。
発生条件
- ワークスペースの数がとても多い
- Kappletやテンプレートの右側にある設定項目で多くのワークスペースにチェックが付いている
※ワークスペース名がマルチバイトかどうかや名前の文字数、その他リクエストの情報で変化するため、具体的な数は割り出せません。事例としては、200個ほどのワークスペースで発生しております。
対処方法
- リクエストの最大サイズを増やす方法
以下のserver.xmlのファイルを編集していただき、ご利用中の設定箇所にて 「maxHttpHeaderSize="65536"」を追加してください。
その後、Tomcatを再起動してください。
※maxHttpHeaderSizeの値を増やすことで対応は可能ですが、発生条件にも記載したような理由から適性値はございません。
フォルダパス
{Tomcatインストールフォルダ}/conf/server.xml
例:Tomcat構築手順で設定した箇所にmaxHttpHeaderSizeを64MBとして追加した場合
※TLS/SSL化した場合は別の該当箇所となります。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="10485760"
maxParameterCount="50000"
maxHttpHeaderSize="65536"
/> - ワークスペースのチェックを減らす方法
ワークスペースで選択しているチェックを減らしてください。
※こちら、最初はエラーメッセージが表示されてしまいますが、減らすことで連結している情報が減るため、エラーメッセージは表示されなくなります。
注意事項
- 対処方法1を行っても利用中のネットワーク環境によっては、別のエラーメッセージが表示される可能性があります。
理由としては、リクエスト情報が長いことやURLで使えない文字が含まれることにより、セキュリティとして弾かれる可能性があるためです。
この場合は対処方法2かネットワーク管理者にてご対応頂くようにお願いいたします。
例:ERROR: The requested URL could not be retrieved