快速URL参数function不会将加号(+)解码为空格

使用Express的URL参数function时,参数似乎自动解码。 也就是说,百分比编码的实体被parsing为它们的正常forms。 %20被replace为一个空格。

但是,plus +不会被replace为空格。 这大概是因为Express在内部使用decodeURIComponent() ,也不能用空格replaceplus + 。 简单的示例代码:

 app.get('/:sourceFile', function (req, res, next) { console.log(req.params.sourceFile); }); 

如果您请求/test%20test ,那么您将在控制台上进行test test 。 如果您要求/test+test ,那么您在控制台上得到test+test

在Express 4中有没有办法改变这种操作模式? 这是一个错误?

您正尝试使用+来表示请求的“URI部分”中的空格。 你不能这样做。 加号仅在查询string中被转换为空格。

这不是一个错误。 在URI规范(第12/13页https://tools.ietf.org/html/rfc3986 )中,加号是一个保留字符,不能被翻译为空格。