Ta vare på binære bildesvar i ein Node.js-proxy
Straym binære kroppar gjennom ein Node-vidareføringsproxy og hald tekstdekoding att for medvitne teksttransformasjonar.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Bruk denne kroppsvegen etter målval, førespurnaden til kjelda og førebuing av status og hovud til klienten. Node-straumar leverer vanlegvis Bufferar; ikkje samle dei i ein streng for bilete eller anna uendra binært innhald.
pipeline koordinerer mottrykk og fører feil vidare. Det kan øydeleggje målet ved feil, så ikkje rekn med at det kan sendast endå eit HTTP-feilsvar etterpå. Dette utdraget er ikkje ein fullverdig proxyserver.
For byte som passerer, ta vare på relevante metadata for representasjonen, som medietype og innhaldskoding, og handsame hop-spesifikke felt gjennom vidaresendingsreglar. Ei samanlikning av gzip-byte og samsvarande svarhovud viser valet mellom koda og dekoda representasjon.
Medviten omskriving av HTML treng ein annan veg: kjenne att medietypen, handsame komprimering og teiknsett, transformere teksten og generere metadata for dei nye byta. Den gamle Content-Length kan ikkje skildre ein endra kropp.
Buffer.concat kan ta vare på binært innhald når full bufreing er nødvendig, men lagrar heile kroppen i minnet. Ein passerande bildestraum treng ikkje den kostnaden.