Yüklemeyi Parçalar Hâlinde Okumak Chunked HTTP Gerektirmez
Bir yükleme forward proxy üzerinden farklı davrandığında sınırlı uygulama okumalarını HTTP/1.1 ileti çerçevelemesinden ayırın.
Hayır. Bir istemci büyük bir dosyayı küçük arabelleklerde okuyup bilinen bir Content-Length ile gönderebilir. Sınırlı okumalar bellek kullanımını denetler; HTTP çerçevelemesi ise alıcıya isteğin gövdesinin nerede bittiğini söyler.
Bayt uzunluğunu HTTP kütüphanesinin bildiği sabit bir dosya, bilinmeyen miktarda veri üreten bir üreticiden farklıdır. Her iki kaynak için de kütüphanenin desteklediği gövde arayüzünü kullanın. Yalnızca bir uzunluk vermek için dosyanın tamamını bir dizeye birleştirmeniz gerekmez.
HTTP/1.1 için gerçekte gönderilen çerçevelemeyi inceleyin: protokolün kurallarına göre Content-Length veya chunked transfer coding. Chunked kodlama, dosya içeriğinin dışına boyut işaretleri ekler. Çelişkili çerçeveleme alanlarını birleştirmeyin ve proxy'yi yüklemeyi kabul etmeye ikna etmek için uzunluk tahmin etmeyin.
Proxy üzerinden bir yükleme başarısız olursa HTTP sürümünü, gövde kaynağını ve ilk reddi kaydedin. 411 yanıtı, gövdenin ortasında kapanan bir bağlantıdan farklı bir inceleme önerir. Bunun yerine kimlik doğrulama yeniden denemeleri başarısız olursa, yükleme gövdesinin yeniden oynatılıp oynatılamayacağını kontrol edin. Uygulamanın okuma arabelleği boyutunu değiştirmek isteğin çerçevelemesini tam olarak olduğu gibi bırakabilir.
Yol bu gözlem için önemlidir. Düz metin iletme, yüklemenin HTTP çerçevelemesini proxy'ye açık eder; olağan uçtan uca HTTPS ise onu bir tünelin içine koyar. HTTP/2 kendi çerçevelemesini kullanır. Dolayısıyla Squid'in tarihsel sınırlamaları belirli eski hataları açıklar, günümüzdeki her proxy'nin akış hâlinde yüklemeleri reddettiğine dair bir kuralı değil.