HTTP GETリクエストの最大長は?
この長さを超えるGETリクエストを受信した場合にサーバーが返すことができる/すべきであると定義された応答エラーはありますか?
これはWebサービスAPIのコンテキストにありますが、ブラウザーの制限を確認することも興味深いです。
HTTP GETリクエストの最大長は?
この長さを超えるGETリクエストを受信した場合にサーバーが返すことができる/すべきであると定義された応答エラーはありますか?
これはWebサービスAPIのコンテキストにありますが、ブラウザーの制限を確認することも興味深いです。
回答:
制限は、使用されるサーバーとクライアントの両方に依存します(該当する場合は、サーバーまたはクライアントが使用しているプロキシも)。
ほとんどのWebサーバーには8192バイト(8 KB)の制限があります。これは通常、サーバー構成のどこかで構成可能です。クライアント側の問題に関しては、HTTP 1.1仕様はこれについてさえ警告しています。以下は、3.2.1章の抜粋です。
注:サーバーは、255バイトを超えるURIの長さに依存することに注意する必要があります。これは、一部の古いクライアントまたはプロキシの実装がこれらの長さを適切にサポートしていない場合があるためです。
Internet ExplorerおよびSafariでの制限は約2 KB、Operaでは約4 KB、Firefoxでは約8 KBです。したがって、8 KBが可能な最大長であり、2 KBはサーバー側で信頼できるより手頃な長さであり、255バイトがURL全体が入ると想定するのに最も安全な長さであると想定できます。
ブラウザまたはサーバーのいずれかで制限を超えた場合、ほとんどは警告なしに制限外の文字を切り捨てます。ただし、一部のサーバーはHTTP 414エラーを送信する場合があります。大きなデータを送信する必要がある場合は、GETではなくPOSTを使用することをお勧めします。その制限ははるかに高いですが、クライアントよりも使用するサーバーに依存します。通常、平均的なWebサーバーでは最大約2 GBが許可されています。これは、サーバー設定のどこかでも構成できます。平均的なサーバーは、POSTの制限を超えると、サーバー固有のエラー/例外を表示します。通常はHTTP 500エラーです。
ここで2つの別々の質問をしています。
HTTP GETリクエストの最大長は?
すでに述べたように、HTTP自体は要求の長さにハードコーディングされた制限を課しません。ただし、ブラウザには2 KB〜8 KBの範囲の制限があります(非常に古いブラウザを数えると、255バイト)。
この長さを超えるGETリクエストを受信した場合にサーバーが返すことができる/すべきであると定義された応答エラーはありますか?
それは誰も答えていないものです。
HTTP 1.1は414 Request-URI Too Long
、サーバー定義の制限に達した場合のステータスコードを定義します。RFC 2616の詳細を確認できます。
クライアント定義の制限の場合、サーバーが要求をまったく受信しないため、サーバーが何かを返すことに意味はありません。
ブラウザの制限は次のとおりです。
Browser Address bar document.location
or anchor tag
---------------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
Internet Explorer 11 2047 5120
Edge 16 2047 10240
もっと欲しい?Stack Overflowでこの質問を参照してください。
同様の質問がここにあります:GETリクエストの長さに制限はありますか?
制限に達し、共有ホスティングアカウントでも、ブラウザがサーバーに到達する前に空白のページを返しました。
はい。GETリクエストに制限はありません。
Chromeブラウザとcurlコマンドの両方を使用して、クエリ文字列の一部として最大4000文字を送信できます。
期待される200 OK応答を返したTomcat 8.xサーバーを使用しています。
これは、Google Chrome HTTPリクエストのスクリーンショットです(セキュリティ上の理由により、試したエンドポイントを非表示にしています)。
応答