使用 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 中更改这种操作模式?这是一个错误吗?
最佳答案
您正在尝试使用 + 来表示请求的“URI 部分”中的空格。你不能那样做。加号仅在查询字符串中转换为空格。
这不是错误。在 URI 规范(第 12/13 页 https://www.rfc-editor.org/rfc/rfc3986 )中,加号是保留字符,不应翻译为空格。
关于node.js - Express URL 参数功能不会将加号 (+) 解码为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111288/