web-dev-qa-db-ja.com

ウェブサーバーがGETリクエストへの応答で返すことができるデータの長さの制限

[〜#〜] rest [〜#〜]に応答するjettyサーバーで実行中のサービスがあります[〜#〜] get [〜#〜]リソースデータ。これまでに取得したデータは数KBのオーダーです。私は、同様のREST巨大なデータを返す可能性のあるサービスを使用したいと考えています。100mb以上かもしれません。クライアントプロセスは十分なメモリで構成されています。

JettyやWebサーバーが一般に、GETに応答してクライアントに返すことができるデータの長さに制限を設けているのではないかと思っています。もしそうなら、桟橋で設定可能ですか?

26
techuser soma

元の答え:

JettyからのHTTP応答で返されるデータの量に制限はありません。

宇宙の熱死 の少し前まで、クライアントにデータを戻すことができます。

技術的に言えば、Content-Lengthを指定せずにHTTP応答を使用できます。これは、 Chunked Transfer-Encoding を使用するか、データの完了を示すConnection: closeを含む生のバイトストリームを使用して返すことができます(送信された)基になる接続のクローズによって。どちらも本質的に無制限です。

Content-LengthヘッダーでHTTP応答を使用する場合、Content-Lengthは 実際には32ビットの数値ですが、最新のブラウザーは64ビットバージョンをサポートしています であることに注意してください。

更新(2019年8月):

Jetty 9.4.20.v20190813は、最大サイズのContent-Lengthヘッダーを処理できるようになりました Long.MAX_VALUE9,223,372,036,854,775,807 バイト)

47
Joakim Erdfelt