要求を受け取り、難読化して別のサーバーに要求を渡すNodeJSプロキシがあります。最近、私たちが所有していない別のプロキシを導入するために変更を加える必要がありました。このプロキシが要求を二重にエンコードするようになっているようです。一時的な回避策として、必要に応じてリクエストの本文をデコードしたい(この新しいプロキシは、他の環境ではなく一部の環境に存在する)。私はこれを行う方法について見てきました、そして、それは 'decodeURIComponent'のように思っていますが、私はそれを使用しようとするとmalformedURI例外が発生するので、私は間違って使用しているのだろうかと思っています、またはこの場合には適切ではありません。私は次のエラーを取得する。これによりNodeJSでPOSTリクエストをURLデコードする方法
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)]);
});
:
return new Buffer(decodeURIComponent(buffString));
^
URIError: URI malformed at decodeURIComponent (native)
...
元リスナーのコードが変更されているURLデコードリクエストボディにしようと
うまく動作します。
body = new Buffer(0);
req.addListener('data', function(chunk) {
return body = Buffer.concat([body, Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk)]);
});
ありがとうございます!