|
|
|
|
|
by X-Istence
1334 days ago
|
|
HTTP pipelining is not normal usage of HTTP/1.1. And it means that if request number 1 fails, usually request number 2 and 3 are lost because servers will slam the door shut because of the lack of framing around HTTP it is too dangerous to try and continue parsing the HTTP requests that are incoming without potentially leading to a territory where they are parsing the incoming text stream wrong. This is what led to the many request smuggling, its because the front-end proxy treats the request different from the backend proxy and parses the same HTTP text stream differently. Since there is no framing there is no one valid way to say "this is where a request starts, and this is where a request ends and it is safe to continue parsing past the end of this request for the next request". Servers are also allowed to close the connection at will. So let's say I pipeline Request 1, 2, and 3. The server can respond to Request 1 with Connection: close, and now request 2 and 3 are lost. That's the reason HTTP pipelining is not supported by browsers/most clients. Curl removed it and there's a blog post about it: https://daniel.haxx.se/blog/2019/04/06/curl-says-bye-bye-to-... |
|