HTTP GETリクエストの最大長 質問する

HTTP GETリクエストの最大長 質問する

HTTPの最大長は?得るリクエスト?

この長さを超える GET リクエストを受信した場合、サーバーが返すことができる/返す必要がある応答エラーが定義されていますか?

これは Web サービス API のコンテキストですが、ブラウザの制限も確認すると興味深いです。

ベストアンサー1

制限は、使用されるサーバーおよびクライアントの両方 (該当する場合は、サーバーまたはクライアントが使用するプロキシも) に依存します。

ほとんどのサーバーとクライアントは8192バイト(8KB)の制限があり、これは通常サーバーまたはクライアントの設定で変更できます。HTTP仕様では、8000オクテットを推奨しています。セクション4.1:

すべての送信者と受信者は、プロトコル要素の長さが少なくとも 8000 オクテットの URI をサポートすることが推奨されます。ただし、一部の構造とワイヤ上の表現 (たとえば、HTTP/1.1 のリクエスト ライン) は、場合によっては必然的に大きくなることに注意してください。

しかし、これは必須ではありません。制限は一般的に古いクライアントでは低くなっています。たとえば、Internet Explorerでは約2KBの制限がありました。前のバージョンHTTP 仕様では文字通り次のように述べられています。

注意: 一部の古いクライアントまたはプロキシ実装ではこれらの長さが適切にサポートされない可能性があるため、サーバーは 255 バイトを超える URI の長さに依存することに注意する必要があります。

ブラウザまたはサーバーのいずれかで制限を超えた場合、ほとんどのサーバーは警告なしに制限外の文字を切り捨てます。ただし、一部のサーバーは警告を送信する場合があります。HTTP 414「URIが長すぎます」エラー

大きなデータを送信する必要がある場合は、GET ではなく POST を使用することをお勧めします。POST の制限ははるかに高いですが、クライアントよりも使用するサーバーに依存します。通常、平均的な Web サーバーでは最大約 4 GB までが許可されます。これは、サーバー設定のどこかで構成することもできます。平均的なサーバーでは、POST 制限を超えると、通常は HTTP 500 エラーとしてサーバー固有のエラー/例外が表示されます。

おすすめ記事