Limit on the length of the data that a webserver can return in response to a GET request

techuser soma picture techuser soma · Apr 23, 2013 · Viewed 43.7k times · Source

I have a REST service running on jetty server that responds to GET requests with some resource data. So far the data that i retrieve has been in the order of a few kb. I am looking to use a similar REST service that could possibly return huge data, may be a 100 mb or more. No memory issues expected since the request volume is low and both the jetty server and rest client processes have been configured with enough memory.

I am wondering if jetty or any webserver in general places a restriction on the length of data it can return to the client in response to a GET. If so, is it configurable in jetty?

Answer

Joakim Erdfelt picture Joakim Erdfelt · Apr 23, 2013

Original Answer:

There are no limits on the amount of data returned on a HTTP response from Jetty.

You could stream data back to the client until shortly before the heat death of the universe.

Technically speaking, you can have a HTTP Response with no Content-Length specified, which can be returned using either the Chunked Transfer-Encoding, or just a raw stream of bytes with a Connection: close indicating when the data is complete (done being sent) by a close of the underlying connection. Both of which are essentially limit-less.

If you use a HTTP Response with Content-Length header, be aware that Content-Length is, in practice, a 32-bit number, but more modern browsers support the 64-bit versions.

Update (August 2019):

Jetty 9.4.20.v20190813 can now handle Content-Length headers of maximum size Long.MAX_VALUE (9,223,372,036,854,775,807 bytes)