実際の HTTP ヘッダーの長さには制限がありますか?
-
11-09-2019 - |
質問
コンテキスト情報を追加する Web アプリケーションがあります。 XmlHttpRequest を使用したオブジェクト setRequestHeader API。カスタムヘッダー名を使用しています(例:X-Foo) と JSON 構造化された価値。これはリクエストに関するメタ情報であるため、URL QueryString または POST 本文の一部ではありません。
ヘッダー値に実際的なサイズ制限はありますか?JSON が切り詰められると、解析できなくなります。私が最も懸念しているのは、Apache 2、Tomcat 6、および IIS 7 の制限です。Googleで検索してみたところ、 httpヘッダーの長さ制限, しかし、結果の多くは古いように見えます。関連するコメントがいくつかあります ユーザー エージェント文字列はどのくらい大きくなりますか? しかし、私が望むほど具体的ではありません。
編集:私はちょうどこの同様の質問に遭遇しました - http ヘッダー値の最大値は?
解決
はい、しかし、制限は設定やプラットフォームに依存しています。たとえば、 Tomcatのには、8Kのデフォルトの制限があります。私は、IIS 6で、IIS 7わからない、16Kの制限があると信じています。いくつかのWebサイトの統合Windows認証を使用したとき、私はこれに走りました。ヘッダにエンコードされたときに私のセキュリティトークンがあまりにも大きかったが判明。幸いなことに、これらは設定可能です。 IISのレジストリ設定は、 http://support.microsoft.com/kb/820129 をで見つけることができます。私は変更するキー設定(ヘッダサイズあたり)MaxFieldLengthとMaxRequestBytesの(要求の合計サイズ)であると考えています。
他のヒント
各 Web サーバー ソフトウェアには制限がありますが、制限があるかどうかに違いがあります。 HTTPリクエストライン ヘッダー フィールドに加えて、またはヘッダー フィールドごとに。
要約は次のとおりです。
結論としては次のようになります。上記のすべての Web サーバーによって受け入れられるには、 リクエストのリクエスト行とヘッダーフィールドは 8190 バイトを超えてはなりません. 。これは各ヘッダー フィールドの制限でもあります (実質的にはさらに少なくなります)。
Apacheのために、私にはこのサーバーの制限を発見しましたこれらのディレクティブを示していますApacheのセキュリティの記事:
# allow up to 100 headers in a request
LimitRequestFields 100
# each header may be up to 8190 bytes long
LimitRequestFieldsize 8190
HttpCoreModuleからnginxのために、 large_client_header_buffers のディレクティブは、これを制御します:
要求の最長のヘッダ行もサイズ以下でなければなりません 一方のバッファの、そうでない場合、クライアントはエラー「不正要求」(400)を取得します。
は、デフォルトでは一つのバッファのサイズは、ページのサイズに等しいです。 プラットフォームに応じて、この4Kや8Kのいずれか
、それはあなたが本当にファイアウォール、ロードバランサやプロキシを通じて全体の方法を設定することができそうです。小さなヘッダサイズを維持する問題を遠ざけるます。
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まで。注記:デフォルトでは、Apache HTTP ヘッダーのサイズ制限は 8 KB (8190 バイトとキャリッジ リターン) です。
Flash Media Server のヘッダー サイズ制限が他の人に影響を与える場合に備えて、これをここに置きます。