2011-01-03 9 views
1

Ich arbeite derzeit auf einem Proxy-Server, wo wir in diesem Fall die Daten ändern müssen (mit regexp), die wir durchmachen.Node.js Proxy, Umgang mit Gzip-Komprimierung

In den meisten Fällen funktioniert es gut, außer für Websites, die gzip als Content-Encoding verwenden (ich denke), habe ich ein Modul namens compress und versuchte, die Stücke, die ich durch einen Dekomprimierung/gunzip Stream aber es läuft nicht wirklich so, wie ich es erwartet habe.

Ich fragte mich, ob ich überhaupt in die richtige Richtung gehe, und ob es mehr Module gibt, die mein Leben erleichtern (in Bezug auf die gzip-Komprimierung).

Greetz,

Benjamin

+0

Was meinen Sie "nicht wie erwartet"? Mit gzip (oder irgendeiner Art von verlustfreier Komprimierung) funktioniert es normalerweise entweder oder funktioniert nicht und Sie haben nutzloses Kauderwelsch. Wenn dies der Fall ist, ist es wahrscheinlich ein Codierungsproblem. Sie können keinen 'utf8'-Stream an ein Dekomprimierungsmodul senden und erwarten, dass es sauber dekomprimiert wird. Der Stream muss im nativen 'Buffer'-Format bleiben. – MooGoo

Antwort

0

Werfen Sie einen Blick dort: Node.js: Gzip compression?

Es gibt eine alternative Knoten-Kompresse verwendet, aber diese Lösung wird ebenfalls erwähnt.

Cheers,

-stan

5

Wenn Sie der Meinung sind, dass Ihr Proxy nur zum Filtern oder Ändern von Text dient, fühlen Sie sich über die Komprimierung und Dekomprimierung von gzip ausführlich.

Eine andere Lösung ist einfach.
Ändern Sie den HTTP-Anfrage-Header. Dann können Sie einfachen Text vom Server erhalten.

Entfernen Sie "Accept-Encoding" vom HTTP-Request-Header.

+2

req.headers ['accept-encoding'] = '*; q = 1, gzip = 0'; // Unkomprimiert erzwingen – user956584