Pertahankan byte berkas biner saat mengunggah melalui proksi
Pertahankan byte berkas dan panjang byte saat mengunggah melalui proksi, alih-alih mendekode artefak sebagai teks dan membangunnya ulang dengan ASCII.
Berkas biner harus tiba di klien HTTP sebagai byte. Membacanya dengan pembaca teks dan menyandikan ulang string yang dihasilkan sebagai ASCII dapat mengganti nilai sebelum proksi menerima apa pun. Bekerjanya contoh teks kecil tidak membuat jalur itu aman untuk gambar, arsip, atau dokumen.
Pada jalur unggah .NET yang sudah ada, ganti konversi itu dengan sumber badan biner:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Lewatkan konten melalui unggahan HTTP yang dikonfigurasi aplikasi; fragmen menetapkan sumber badan, sementara klien yang ada tetap menangani metode, tujuan, proksi, dan pengelolaan masa pakai.
Hapus Content-Length apa pun yang dihitung dari jumlah karakter string lama. Kolom itu mengukur oktet. Biarkan pustaka HTTP membangun pembingkaian dari representasi badan alih-alih memasangkan jumlah karakter dengan buffer yang dikodekan secara berbeda.
Untuk unggahan teks yang disengaja, pilih pengodean secara eksplisit dan turunkan panjang yang diperlukan dari byte yang dikirim. Keputusan format teks itu tidak boleh diterapkan pada berkas sembarang.
Bandingkan artefak yang ditransfer dengan nilai yang diharapkan dan tepercaya. Keberhasilan HTTP memastikan bahwa operasi unggah selesai pada lapisan itu; itu tidak dapat menunjukkan bahwa konversi teks sebelumnya mempertahankan byte asli.