2012-08-11 17 views
5

私はScalatra WebフレームワークでJetty 7.6を使用しています。いくつかのリクエストでは、クライアントに応答本文として大きなテキストを送信する必要があります.HttpServletResponse.getWriter()を使用してレスポンスを書き込みます。Jetty HTTP 413ヘッダー完全なエラー - Java/Scala

私は、クライアント側で413 Header Fullエラーが発生していることに気付きました。 Jettyのこの問題に対する明らかな解決策の1つは、jettyのヘッダーバッファーサイズの値を増やすことです。

HttpServletResponse.getWriter()は、リクエストのヘッダのサイズと何が関係しているのか知りたいですか?私が理解しているように、HttpServletResponse.getWriter()はレスポンスヘッダではなくレスポンスボディに書き込みます。

誰かがこの問題を説明できるかどうか分かります。

答えて

3

HTTP response code 413はHttpStatusです。 REQUEST_ENTITY_TOO_LARGE

HttpServletResponse.getWriter()とは関係ありません。

要求ヘッダーをキャプチャしてチェックすると、不当な量のヘッダーがサーバーに送信されています。

6

残念ながら、これは重要なヘッダーではありません(joakime thougthなど)。 Jettyには、ヘッダー用バッファーと要求用バッファーがあります。

  • フルリクエスト(httpデータストリーム)が聴取者のバッファに適合する場合は問題ありません。
  • ヘッダーのバッファーを超える場合、要求バッファーはユーザーになります。
  • それは要求バッファを超えた場合、あなたはそこの答えのために同じこと(バッファ)があるが、うまくいけばHTTPは応答を「チャンク」を送信するように設計されて、ステータス413

で標準のHTTPレスポンスを得ました。

アップロードで同じ問題が発生しています。

私が見つけたのは、それらのバッファのサイズを設定できることです。 を参照してください: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/nio/SelectChannelConnector.html

http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/nio/AbstractNIOConnector.html

http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/server/AbstractConnector.html#setRequestHeaderSize(int

をあなたはそれを行うにはjetty.xmlファイルを使用することができます。

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"  "http://jetty.mortbay.org/configure.dtd"> 
<Configure id="Server" class="org.eclipse.jetty.server.Server"> 
<Call name="addConnector"> 
    <Arg> 
    <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
    <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set> 
    <Set name="requestHeaderSize">8192</Set> 
    </New> 
    </Arg> 
</Call> 
</Configure> 
+1

リンクもはや作業を参照してください。 – morpheus

2

あなたが使用したり、桟橋9にアップグレードしている場合、彼らはSelectChannelConnectorが削除されました。ここで更新jetty.xmlされる -

<New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> 
    <Set name="requestHeaderSize">8192</Set>  
</New> 

<Call name="addConnector"> 
    <Arg> 
    <New class="org.eclipse.jetty.server.ServerConnector"> 
     <Arg name="server"><Ref id="Server" /></Arg> 
     <Arg name="factories"> 
     <Array type="org.eclipse.jetty.server.ConnectionFactory"> 
      <Item> 
      <New class="org.eclipse.jetty.server.HttpConnectionFactory"> 
       <Arg name="config"><Ref id="httpConfig" /></Arg> 
      </New> 
      </Item> 
     </Array> 
     </Arg> 
     <Set name="port">8080</Set> 
    </New> 
    </Arg> 
</Call> 

http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html

関連する問題