如何在NodeJS中对POST请求进行url解码
How to url decode a POST request in NodeJS
我有一个NodeJS代理,它接收一个请求,进行一些模糊处理,然后将请求传递给另一台服务器。最近,我们需要进行更改,以引入另一个我们不拥有的代理,看起来这个代理导致请求被双url编码。作为一种临时解决方法,我希望在必要时解码请求的主体(这个新代理将存在于某些环境中,而不是其他环境中)。我已经四处寻找了如何做到这一点,似乎"decodeURIComponent"是我想要的,但当我尝试使用它时,我会遇到一个格式错误的URI异常,所以我想知道我是用错了它,还是它不适合这种情况。
正在尝试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)
...
正在修改的正常工作的原始侦听器代码低于
body = new Buffer(0);
req.addListener('data', function(chunk) {
return body = Buffer.concat([body, Buffer.isBuffer(chunk) ? chunk : new Buffer(chunk)]);
});
谢谢!
好吧,我意识到了两件事,如果算上"我很笨",可能是3件。1) 正文中的内容是gzipped json,如果它被解压缩,我所拥有的一切都很好,2)我想解码的内容在url中,而不是在正文中。。。这就是为什么它最初被任何东西编码的原因。我不知道一个贴体被百分比编码是否正常,但不管怎样,我都觉得很愚蠢。哈哈。
所以我想答案是,我提供的代码可以很好地用于有效的url字符。
相关文章:
- 如何在JS中编码URL并在PHP中解码
- 从url对对象进行角度编码和解码
- PHP(PDO)url编码如何在javascript中解码?decodeURI?或解码URI组件
- 阻止Backbone.history.navigation解码URL片段
- 如何在NodeJS中对POST请求进行url解码
- 在JavaScript(浏览器端)中解码URL Safe Base64
- 如何在我的 AngularJS 应用程序中解码 URL 的部分查询字符串
- 在 JavaScript 中解码 URL 时遇到问题
- 解码已用javascript编码的url
- 解码 URL 后如何使用数据
- 对复杂字符串进行url解码;URI格式错误”;错误
- Angular显示url编码错误,如何获得解码版本
- 用javascript解码url字符串
- Android,数据url解码时base-64错误
- 在asp.net中的Url解码
- 在NodeJS中实现url解码(php)的最佳方式
- Url解码-不工作
- Java和JS/AS3在URL解码/编码UTF-8方面的差异(bug!?)
- 有没有办法让firefox不自动url解码分配给document.location.hash的值?
- window.open(),浏览器地址栏,和jQuery url解码