71

setRequestHeaderAPIを使用してXmlHttpRequestオブジェクトにコンテキスト情報を追加するWebアプリケーションがあります。カスタムヘッダー名(X-Fooなど)とJSON構造化値を使用しています。これはリクエストに関するメタ情報であるため、URLQueryStringまたはPOST本文の一部ではありません。

ヘッダー値に実際的なサイズ制限はありますか?JSONが切り捨てられると、解析できなくなります。私はApache2、Tomcat 6、IIS 7の制限に最も関心があります。httpヘッダーの長さの制限をGoogleで検索しましたが、結果の多くは古くなっているようです。ユーザーエージェント文字列はどのくらい大きくなることができますか?にいくつかの関連するコメントがあります。しかし、私が望むほど具体的ではありません。

編集: 私はちょうどこの同様の質問に出くわしました-httpヘッダー値の最大値?

4

5 に答える 5

58

各Webサーバーソフトウェアにはいくつかの制限がありますが、HTTP要求行とヘッダーフィールドに制限があるか、各ヘッダーフィールドに制限があるかには違いがあります。

要約は次のとおりです。

  • Apache 1.3、2.0、2.2、2.38190バイトヘッダーフィールドごと _
  • IIS:
    • 4.02097152バイト(要求行とヘッダーフィールドの場合)
    • 5.0131072バイト、 Windows 2000 Service Pack 4では16384バイト(要求行とヘッダーフィールド用)
    • 6.016384バイト(ヘッダーフィールドごと)
  • Tomcat:
    • 5.5.x / 6.0.x49152バイト(要求行とヘッダーフィールドの場合)
    • 7.0.x8190バイト(要求行とヘッダーフィールドの場合)

結論として、上記のすべてのWebサーバーで受け入れられるためには、リクエストのリクエスト行とヘッダーフィールドが8190バイトを超えてはなりません。これは、各ヘッダーフィールドの制限でもあります(事実上さらに少なくなります)。

于 2011-05-28T08:59:45.907 に答える
51

はい。ただし、制限は構成可能であり、プラットフォームによって異なります。たとえば、Tomcatのデフォルトの制限は8Kです。IIS7についてはよくわかりませんがIIS6には16Kの制限があると思います。いくつかのWebサイトで統合Windows認証を使用しているときに、これに遭遇しました。ヘッダーにエンコードしたときにセキュリティトークンが大きすぎたことがわかりました。幸い、これらは構成可能です。IISのレジストリ設定は、http://support.microsoft.com/kb/820129にあります。変更する重要な設定は、MaxFieldLength(ヘッダーサイズあたり)とMaxRequestBytes(リクエストの合計サイズ)だと思います。

于 2009-07-08T12:21:48.803 に答える
15

Apacheの場合、次のディレクティブをリストしたApacheセキュリティのサーバー制限に関する記事を見つけました。

  # allow up to 100 headers in a request
  LimitRequestFields 100
  # each header may be up to 8190 bytes long
  LimitRequestFieldsize 8190

Nginxの場合、HttpCoreModuleのlarge_client_header_buffersディレクティブがこれを制御します。

リクエストの最長ヘッダー行も1つのバッファのサイズを超えてはなりません。そうでない場合、クライアントはエラー「Badrequest」(400)を受け取ります。

デフォルトでは、1つのバッファーのサイズはページのサイズと同じです。プラットフォームに応じて、これは4Kまたは8Kのいずれかです。

于 2009-07-09T23:42:58.713 に答える
4

サーバーを構成することはできますが、ファイアウォール、ロードバランサー、およびプロキシを完全に構成できるとは限りません。ヘッダーサイズを小さく保つことで、問題を回避できます。

于 2014-03-05T08:08:56.663 に答える
3

Flash Media Server 4.5には、デフォルトのヘッダー長の制限が非常に短いため、特にCookieの負荷が中程度の状況では、サーバーが単に応答しなくなる可能性があります。

参照:Flash Media Server 4.5構成と管理:サーバーの構成Apache HTTPサーバーの構成:最大HTTPヘッダー行の長さを指定します

Flash Media Server Adaptor.xmlファイルでは、MaxHeaderLineLength 要素によってサーバーが処理できるHTTPヘッダーのサイズが決まります。のデフォルト値MaxHeaderLineLengthは1024バイトです。一部のブラウザは、1024バイトを超えるヘッダーを送信します。このシナリオでは、Apacheは空の応答を返します。この問題を修正する にはMaxHeaderLineLength、8192に構成します。

注:デフォルトでは、ApacheHTTPヘッダーのサイズ制限は8KB(8190バイトとキャリッジリターン)です。

Flash Media Serverのヘッダーサイズの制限が他の人に噛み付いた場合に備えて、これをここに配置します。

于 2012-10-05T01:23:21.427 に答える