Express URL参数功能不会将加号(+)解码为空格

时间:2014-09-30 01:15:59

标签: node.js express decodeuricomponent

使用Express的URL参数功能时,似乎会自动解码参数。也就是说,百分比编码实体被解析为其正常形式。 %20替换为空格。

但是,加号+不会替换为空格。这可能是因为Express在内部使用decodeURIComponent(),也没有用空格替换加+。简单示例代码:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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