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!