9
使用Express的URL参数功能时,似乎参数会自动解码。也就是说,百分比编码的实体被解析为它们的正常形式。 %20
被替换为空格。Express URL参数功能不会解码加号(+)作为空格
但是,加号+
未被空格替换。这大概是因为Express在内部使用decodeURIComponent()
,这也不能代替带空格的+
。简单的示例代码:
app.get('/:sourceFile', function (req, res, next) {
console.log(req.params.sourceFile);
});
如果要求/test%20test
,那么你得到的控制台上test test
。如果你要求/test+test
,那么你在控制台上得到test+test
。
有没有办法在Express 4中更改这种操作模式?这是一个错误?
解码目前是(4.9.5)[在router/layer.js中定义](https://github.com/strongloop/express/blob/4.9.5/lib/router/layer.js# L131-L151),如你猜测的那样,使用'decodeURIComponent()',我没有看到任何修改这个行为的选项('decode_param'被定义,并且只在模块范围内作为本地引用)没有PR。 – 2014-09-30 03:22:05
@JonathanLonowski感谢您深入研究。我想我可以用'%20'来创建一些中间件来替换'+',但这有点不方便。 – Brad 2014-09-30 03:23:28
你有没有想出一个解决方案? – loveNoHate 2015-02-06 08:03:08