Préservez les octets d'un fichier binaire lors d'un envoi via un proxy
Préservez les octets et les longueurs en octets du fichier lors d'un envoi via un proxy, au lieu de décoder l'artefact comme du texte et de le reconstruire en ASCII.
Un fichier binaire doit parvenir au client HTTP sous forme d'octets. Le lire avec un lecteur de texte puis réencoder la chaîne obtenue en ASCII peut remplacer des valeurs avant même que le proxy ne reçoive quoi que ce soit. Le fait qu'un petit échantillon texte fonctionne ne rend pas ce chemin sûr pour une image, une archive ou un document.
Dans un chemin d'envoi .NET existant, remplacez cette conversion par une source de corps binaire :
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Faites passer le contenu par l'envoi HTTP configuré de l'application ; le fragment établit la source du corps, tandis que le client existant conserve la méthode, la destination, le proxy et la gestion de la durée de vie.
Supprimez tout Content-Length calculé à partir du nombre de caractères de l'ancienne chaîne. Ce champ mesure des octets. Laissez la bibliothèque HTTP construire le cadrage à partir de la représentation du corps au lieu d'associer un nombre de caractères à un tampon encodé différemment.
Pour un envoi de texte intentionnel, choisissez l'encodage explicitement et déduisez toute longueur requise des octets envoyés. Cette décision de format texte ne doit pas s'appliquer à des fichiers arbitraires.
Comparez l'artefact transféré à une valeur attendue fiable. Le succès HTTP confirme qu'une opération d'envoi s'est achevée à cette couche ; il ne peut pas montrer qu'une conversion texte antérieure a préservé les octets d'origine.