Bevar binære bildesvar i en Node.js-proxy
Strøm binære kropper gjennom en Node-videresendingsproxy og hold tekstdekoding avsatt til bevisste teksttransformasjoner.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Bruk denne kroppsveien etter målvalget, forespørselen oppstrøms og klargjøringen av status og hoder nedstrøms. Node-strømmer gir normalt Buffere; ikke samle dem i en streng for bilder eller annet uendret binært innhold.
pipeline koordinerer mottrykk og sprer feil videre. Ved feil kan det ødelegge målet, så ikke regn med at en annen HTTP-feilrespons kan sendes etterpå. Dette utdraget er ikke en komplett proxyserver.
For byte som passerer, bevar relevante representasjonsmetadata som medietype og innholdskoding, og håndter hoppspesifikke felt gjennom videresendingsregler. En sammenligning av gzip-byte og tilhørende svarhoder viser valget mellom kodet og dekodet representasjon.
Bevisst omskriving av HTML krever en annen vei: gjenkjenn mediatypen, håndter komprimering og tegnsett, transformer teksten og generer metadata for de nye bytene. Den gamle Content-Length kan ikke beskrive en endret kropp.
Buffer.concat kan bevare binært innhold når full buffering er nødvendig, men lagrer hele kroppen i minnet. En bildestrøm som passerer trenger ikke den kostnaden.