1. ホーム
  2. web-services

[解決済み] HTTP GETリクエストの最大長

2022-03-17 07:01:21

質問事項

HTTPの GET リクエストは?

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

これはWebサービスAPIの文脈ですが、ブラウザの制限も興味深いですが。

解決方法は?

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

ほとんどのウェブサーバーは8192バイト(8KB)を上限としており、これは通常、サーバー設定のどこかで設定可能です。クライアント側の問題については、HTTP 1.1仕様が警告しているほどです。以下は、その抜粋です。 第3.2.1章 :

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

Internet ExplorerとSafariでは約2KB、Operaでは約4KB、Firefoxでは約8KBが限界です。したがって、8KBが最大限の長さであり、2KBがサーバー側で頼るには手頃な長さで、255バイトがURL全体が来ると仮定するのが最も安全な長さだと考えてよいでしょう。

ブラウザでもサーバーでも制限を超えた場合、多くは警告を出さずに制限外の文字を切り捨てるだけです。 一部 しかし、サーバーは HTTP 414エラー .

大きなデータを送信する必要がある場合は、GETの代わりにPOSTを使用するのがよいでしょう。その上限は 多く より高いが、クライアントよりも使用するサーバーに依存する。通常、平均的なウェブサーバーでは2GB程度までが許容されます。

これもサーバー設定のどこかで設定可能です。平均的なサーバーは、POSTの制限を超えた場合、サーバー固有のエラー/例外を表示します(通常はHTTP 500エラー)。