Conserva le risposte binarie delle immagini in un proxy Node.js
Trasmetti corpi binari attraverso un proxy diretto Node e riserva la decodifica del testo alle trasformazioni testuali deliberate.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Usa questo percorso del corpo dopo la scelta della destinazione, la richiesta verso l'origine e la preparazione di stato e intestazioni verso il client. Gli stream Node forniscono normalmente Buffer; non accumularli in una stringa per immagini o altri contenuti binari invariati.
pipeline coordina la contropressione e propaga gli errori. Può distruggere la destinazione in caso di errore, quindi non dare per scontato che dopo si possa inviare un'altra risposta di errore HTTP. Questo frammento non è un server proxy completo.
Per i byte che transitano, conserva i metadati di rappresentazione pertinenti, come il tipo di media e la codifica del contenuto, e gestisci i campi specifici di ogni salto tramite le regole di inoltro. Un confronto tra byte gzip e intestazioni di risposta corrispondenti mostra la scelta tra rappresentazione codificata e decodificata.
La riscrittura deliberata dell'HTML richiede un altro percorso: riconoscere il tipo di media, gestire compressione e set di caratteri, trasformare il testo e generare metadati per i nuovi byte. Il vecchio Content-Length non può descrivere un corpo modificato.
Buffer.concat può conservare contenuti binari quando serve un buffering completo, ma memorizza l'intero corpo in memoria. Uno stream di immagini che transita non ha bisogno di quel costo.