Binäre Bildantworten in einem Node.js-Proxy erhalten
Leite binäre Bodies durch einen Node-Forward-Proxy und reserviere Textdekodierung für bewusste Texttransformationen.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Verwende diesen Body-Pfad nach der Zielauswahl, der Upstream-Anfrage und der Vorbereitung von Status und Headern für den Client. Node-Streams liefern normalerweise Buffer; sammle sie für Bilder oder andere unveränderte binäre Inhalte nicht in einem String.
pipeline koordiniert Gegendruck und propagiert Fehler. Bei einem Fehler kann es das Ziel zerstören, daher sollte man nicht annehmen, dass danach noch eine weitere HTTP-Fehlerantwort gesendet werden kann. Dieses Fragment ist kein vollständiger Proxyserver.
Bei durchgereichten Bytes sollten relevante Repräsentationsmetadaten wie Medientyp und Inhaltskodierung erhalten bleiben, während hopspezifische Felder über Weiterleitungsregeln behandelt werden. Ein Vergleich von gzip-Bytes und passenden Antwortheadern zeigt die Wahl zwischen kodierter und dekodierter Repräsentation.
Bewusstes Umschreiben von HTML braucht einen anderen Pfad: Medientyp erkennen, Kompression und Zeichensatz behandeln, Text transformieren und Metadaten für die neuen Bytes erzeugen. Die alte Content-Length kann einen veränderten Body nicht beschreiben.
Buffer.concat kann binäre Inhalte erhalten, wenn vollständiges Puffern nötig ist, speichert aber den gesamten Body im Arbeitsspeicher. Ein durchgereichter Bildstream braucht diese Kosten nicht.