web-dev-qa-db-ja.com

JAVA -Tomcat-要求ヘッダーが大きすぎます

INFO: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
Java.lang.IllegalArgumentException: Request header is too large
    at org.Apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.Java:512)
    at org.Apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.Java:501)
    at org.Apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.Java:171)
    at org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:996)
    at org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:623)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:318)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1110)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:603)
    at org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
    at Java.lang.Thread.run(Thread.Java:722

Spring Webアプリケーションでこれをどのように解決できますか?

私はこのスレッドを通過しました 要求ヘッダーが大きすぎます

13

解決しました! HTTP POSTの代わりにHTTP GETを使用していました。技術的には、URLの長さが2000文字を超えると、HttpGetに問題があることがわかりました。その場合は、HttpPostを使用するか、URLを分割することをお勧めします。ブラウザには2kb〜8kbの範囲の制限があります

Tomcat:要求ヘッダーが大きすぎます

13

ここに質問がありますが、HTTPヘッダーに制限はありますか?答えはNoです。 制限はありませんが、WebサーバーはPOSTリクエストでも着信リクエストヘッダーサイズを制限しているため、413を取得しています(要求ヘッダーが大きすぎます。)この制限には、要求行とヘッダーフィールドが含まれます。

http://httpd.Apache.org/docs/2.2/mod/core.html#limitrequestfieldsize

https://Tomcat.Apache.org/Tomcat-5.5-doc/config/http.html

http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers

httpヘッダー値の最大値


私の場合、SpringBoot 1.5.8を使用し、HTTP POSTを使用しましたが、以下を追加する必要がありました。

server.max-http-header-size=10000000 

application.propertiesで。

11
Jay

私はそれが古い投稿であることを知っています。ただし、いくつかのビットを明確にすると良いと思います。

  • _server.Tomcat.max-http-header-size = max_wanted_size_パラメーターを使用すると、max_wanted_sizeまで受け入れるようにサーバーを変更しますが、10MBに設定しても、ブラウザーはリクエストパラメーターをブラウザーの制限サイズにカットします。私はchromeで試してみましたが、約150-200kbのようです。
  • Java.lang.IllegalArgumentExceptionがサーバーで発生しており、ブラウザーとは関係ありません。したがって、server.Tomcat.max-http-header-sizeを変更するだけで十分であり、GETメソッドを使用する場合に発生しますが、POSTメソッド(POST case maxPostSizeパラメーターを変更する必要があります)。
6
kimy82

要求および応答HTTPヘッダーの最大サイズ。バイト単位で指定します。指定しない場合、この属性は4096(4 KB)に設定されます。

Error parsing HTTP request headerエラーこれを行うことにより、次の値を増やすことができます。

次の場所に移動します:$Tomcat_HOME/conf/server.xml

server.xml 変更 HTTP/1.1 ConnectorエントリおよびmaxHttpHeaderSizeを「65536 "(バイトで64Kb)」に設定します(以下を参照)。

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />

または

POSTメソッドを使用できます。Tomcatによると、最大2メガバイトまで転送できます。

コンテナのFORM URLパラメータ解析で処理されるPOSTのバイト単位の最大サイズ。この属性を0以下の値に設定することにより、制限を無効にできます。指定すると、この属性は2097152(2メガバイト)に設定されます。

この情報がお役に立てば幸いです。

3
Dulith De Costa

これはPOSTまたはGETではなく、アプリケーションで使用されるTomcatのヘッダーサイズ制限の設定です。

以下のアプリプロパティを使用して、いつでも制御および構成できます。server.Tomcat.max-http-header-size= 1024

1024はバイト単位です。

2
Ashwin Gupta