35

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?

techuser soma
  • 4,766
  • 5
  • 23
  • 43

1 Answers1

64

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)

Joakim Erdfelt
  • 46,896
  • 7
  • 86
  • 136
  • and does the tomcat has response limit? – 君主不是你 Mar 04 '20 at 09:38
  • 1
    With a response of 9,223,372,036,854,775,807 bytes, and an average download speed of 25mbps (which is the high end of the average) ~= 3,125,000 bytes/second, it would take about 187,181.5736 years to download that response. – CPSuperstore Feb 16 '21 at 22:03