Llegir la pujada a trossos no requereix HTTP fragmentat
Separeu les lectures limitades de l'aplicació de l'emmarcament de missatges HTTP/1.1 quan una pujada es comporta diferent a través d'un proxy directe.
No. Un client pot llegir un fitxer gran en memòries intermèdies petites i enviar-lo amb un Content-Length conegut. Les lectures limitades controlen l'ús de memòria; l'emmarcament HTTP diu al receptor on acaba el cos de la petició.
Un fitxer estable del qual la biblioteca HTTP coneix la longitud en bytes és diferent d'un generador que produeix una quantitat desconeguda de dades. Feu servir la interfície de cos admesa per la biblioteca per a tots dos orígens. No cal muntar tot el fitxer en una cadena només per donar una longitud.
Per a HTTP/1.1, inspecteu l'emmarcament realment enviat: Content-Length o codificació de transferència fragmentada segons les regles del protocol. La codificació fragmentada afegeix marcadors de mida fora del contingut del fitxer. No combineu camps d'emmarcament contradictoris ni endevineu una longitud per convèncer un proxy que accepti la pujada.
Si una pujada a través d'un proxy falla, anoteu la versió d'HTTP, l'origen del cos i el primer rebuig. Una resposta 411 suggereix una investigació diferent de la d'una connexió que es tanca a mig cos. Si en canvi fallen els reintents d'autenticació, comproveu si el cos de la pujada es pot reproduir. Canviar la mida del buffer de lectura de l'aplicació pot deixar l'emmarcament de la petició exactament com era.
La ruta importa per a aquesta observació. El reenviament en text pla exposa l'emmarcament HTTP de la pujada al proxy; un HTTPS normal d'extrem a extrem el posa dins d'un túnel. HTTP/2 fa servir el seu propi emmarcament. Per tant, les limitacions històriques de Squid expliquen fracassos antics concrets, no una regla que tot proxy actual rebutgi les pujades en flux.