Membaca unggahan dalam potongan tidak memerlukan HTTP chunked
Pisahkan pembacaan aplikasi yang dibatasi dari pembingkaian pesan HTTP/1.1 saat unggahan berperilaku berbeda melalui proxy penerusan.
Tidak. Klien dapat membaca berkas besar dalam buffer kecil dan mengirimnya dengan Content-Length yang diketahui. Pembacaan terbatas mengendalikan penggunaan memori; pembingkaian HTTP memberi tahu penerima di mana badan permintaan berakhir.
Berkas stabil yang panjang baitnya diketahui pustaka HTTP berbeda dari generator yang menghasilkan jumlah data tak diketahui. Gunakan antarmuka badan yang didukung pustaka untuk kedua sumber. Anda tidak perlu merakit seluruh berkas menjadi string hanya untuk memberikan panjang.
Untuk HTTP/1.1, periksa pembingkaian yang benar-benar dikirim: Content-Length atau pengodean transfer chunked menurut aturan protokol. Pengodean chunked menambahkan penanda ukuran di luar isi berkas. Jangan menggabungkan bidang pembingkaian yang bertentangan atau menebak panjang untuk membujuk proxy menerima unggahan.
Jika unggahan melalui proxy gagal, catat versi HTTP, sumber badan, dan penolakan pertama. Respons 411 menyarankan penyelidikan berbeda dari koneksi yang menutup di tengah badan. Jika justru percobaan ulang autentikasi yang gagal, periksa apakah badan unggahan dapat diputar ulang. Mengubah ukuran buffer baca aplikasi dapat membuat pembingkaian permintaan tetap persis seperti semula.
Rute penting untuk pengamatan itu. Penerusan teks polos memperlihatkan pembingkaian HTTP unggahan kepada proxy; HTTPS ujung-ke-ujung biasa menempatkannya di dalam terowongan. HTTP/2 memakai pembingkaiannya sendiri. Karena itu, keterbatasan Squid historis menjelaskan kegagalan lama tertentu, bukan aturan bahwa setiap proxy saat ini menolak unggahan aliran.