2016-04-02 7 views
0

Ich habe einen NodeJS-Proxy, der eine Anfrage aufnimmt, einige Verschleierung durchführt und dann die Anfrage an einen anderen Server weiterleitet. Vor kurzem mussten wir eine Änderung vornehmen, um einen anderen Proxy einzuführen, den wir nicht besitzen, und es sieht so aus, als ob dieser Proxy die Anfrage dazu veranlasst, doppelt URL-kodiert zu sein. Als vorübergehende Lösung möchte ich den Hauptteil der Anfrage bei Bedarf dekodieren (dieser neue Proxy wird in einigen Umgebungen existieren, nicht in anderen). Ich habe mich umgesehen, wie das geht, und es scheint, als ob 'decodeURIComponent' das ist, was ich will, aber ich bekomme eine missformedURI-Ausnahme, wenn ich versuche, das zu benutzen, also frage ich mich, ob ich es falsch benutze oder es ist einfach nicht passend für diesen Fall.Wie url decodiere eine POST-Anfrage in NodeJS

Der Versuch, URL dekodieren Anfrage Körper:

decodeDoubleEncodedBuffer = function(buffer) { 
    var buffString; 
    if (Buffer.isBuffer(buffer)) { 
     buffString = buffer.toString(); 
    } else { 
     buffString = buffer; 
    } 
    if (Config.requireURLDecode) { 
     return new Buffer(decodeURIComponent(buffString)); 
    } else { 
     return new Buffer(buffString); 
    } 
    }; 

...

body = new Buffer(0) 
    req.addListener('data', function(chunk) { 
    return body = Buffer.concat([body, decodeDoubleEncodedBuffer(chunk)]); 
    }); 

Damit ich die folgende Fehlermeldung erhalten:

return new Buffer(decodeURIComponent(buffString)); 
            ^
    URIError: URI malformed at decodeURIComponent (native) 
    ... 

Der ursprüngliche Code Hörer geändert wird, die funktioniert gut ist unter

body = new Buffer(0); 

req.addListener('data', function(chunk) { 
    return body = Buffer.concat([body, Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk)]); 
}); 

Danke!

Antwort

0

Ok Ich realisierte zwei Dinge, vielleicht 3, wenn Sie zählen "Ich bin dumm". 1) der Inhalt im Körper wurde json gezippt und was ich hatte funktioniert gut, wenn es entpackt ist, 2) der Inhalt, den ich entschlüsseln wollte, war in der URL, und nicht im Körper ... was Sinn macht, warum es von codiert wurde alles an erster Stelle. Ich weiß nicht, ob es überhaupt normal ist, dass ein Post-Körper prozentual codiert ist, aber so oder so fühle ich mich dumm lol.

Also ich denke, die Antwort ist, würde der Code, den ich zur Verfügung gestellt würde für gültige URL-Zeichen funktionieren.

Verwandte Themen