web-dev-qa-db-ja.com

hTTP GETリクエストの最大長

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

update: タグに示されているように、これはWebサービスAPIのコンテキスト内ですが、ブラウザの制限も確認するのは興味深いことです。

439
Mark Harrison

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

ほとんどのWebサーバーには8192バイト(8KB)の制限があり、これは通常サーバー構成のどこかで構成可能です。クライアント側の問題に関しては、HTTP 1.1仕様はこれについて警告さえしています、これは 3.2.1章 の抜粋です:

注:サーバーによっては、255バイトを超えるURIの長さに応じて慎重になる必要があります。古いクライアントやプロキシの実装では、これらの長さを正しくサポートしていない可能性があるためです。

上限はMSIEとSafariで約2KB、Operaでは約4KB、Firefoxでは約8KBです。したがって、8KBが可能な最大の長さであり、2KBがサーバー側で信頼できるより手頃な長さであり、255バイトがURL全体が入ってくると想定するのに最も安全な長さであると想定できます。

ブラウザまたはサーバーのいずれかで制限を超えた場合、ほとんどのユーザーは警告なしに制限を超えた文字を切り捨てます。 いくつかの サーバは HTTP 414 error を送るかもしれません。大量のデータを送信する必要がある場合は、GETではなくPOSTを使用してください。その制限は much より高いですが、クライアントよりも使用されるサーバーに大きく依存します。通常、平均Webサーバーで最大2GBまでが許可されています。これもサーバー設定のどこかで設定可能です。 POST制限を超えると、平均的なサーバーはサーバー固有のエラー/例外を表示します(通常はHTTP 500エラー)。

419
BalusC

ここで2つの別々の質問をしています。

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

すでに述べたように、HTTP自体はリクエストの長さにハードコーディングされた制限を課しません。しかし、ブラウザには2kbから8kb( 非常に古い browsersと数えると255バイト)の範囲の制限があります。

GET要求を受信した場合にサーバーがこの長さを超えると返すことができる、または返すべきであると定義された応答エラーはありますか?

それは誰も答えていないものです。

HTTP 1.1は、サーバー定義の制限に達した場合のステータスコード414 Request-URI Too Longを定義します。 RFC 2616 でさらに詳細を見ることができます。

クライアントが定義した制限の場合、サーバーがリクエストをまったく受け取らないので、サーバーが何かを返すのは意味がありません。

お役に立てれば。

135
Edurne Pascual

ブラウザの制限は次のとおりです。

Browser     Address bar   document.location  
                          or anchor tag
------------------------------------------
Chrome          32779           >64k      
Android          8192           >64k                         
Firefox          >64k           >64k      
Safari           >64k           >64k      
IE11             2047           5120   
Edge 16          2047          10240

もっと欲しい? Stack Overfollowのこの質問 を参照してください

14
Jiraff537

ここで同様の質問: GETリクエストの長さに制限はありますか?

私は限界に達し、私の共有ホスティングアカウントで使用していましたが、サーバーに到達する前にブラウザから空白のページが返されました。

4
jay

技術的には、URLの長さが2000文字を超えるとHttpGetに問題が生じることがわかりました。その場合は、HttpPostを使用するかURLを分割することをお勧めします。

3
MSIslam

すでに述べたように、HTTP自体はリクエストの長さにハードコーディングされた制限を課しません。しかし、ブラウザにはgetメソッドで許可されている2048文字までの範囲の制限があります。

2
Sandeep Kumar