Conserva las respuestas binarias de imagen en un proxy de Node.js
Transmite cuerpos binarios a través de un proxy directo de Node y reserva la decodificación de texto para transformaciones de texto deliberadas.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Usa esta ruta del cuerpo después de la selección del destino, la petición al origen y la preparación del estado y las cabeceras hacia el cliente. Los flujos de Node suelen entregar Buffers; no los acumules en una cadena para imágenes u otro contenido binario sin cambios.
pipeline coordina la contrapresión y propaga los fallos. Puede destruir el destino si hay un error, así que no supongas que después se pueda enviar otra respuesta HTTP de error. Este fragmento no es un servidor proxy completo.
Para los bytes que pasan, conserva los metadatos de representación relevantes, como el tipo de medio y la codificación del contenido, y trata los campos propios de cada salto mediante reglas de reenvío. Una comparación de bytes gzip y cabeceras de respuesta coincidentes muestra la elección entre representación codificada y descodificada.
La reescritura deliberada de HTML necesita otra ruta: reconocer su tipo de medio, gestionar la compresión y el juego de caracteres, transformar el texto y generar metadatos para los nuevos bytes. El antiguo Content-Length no puede describir un cuerpo modificado.
Buffer.concat puede conservar contenido binario cuando se requiere almacenamiento completo, pero guarda todo el cuerpo en memoria. Un flujo de imagen que pasa no necesita ese coste.