11

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

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

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

如果您请求/test%20test,那么您将test test进入控制台。如果您请求/test+test,那么您将test+test进入控制台。

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

4

1 回答 1

4

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

这不是一个错误。在 URI 规范(第 12/13 页https://www.rfc-editor.org/rfc/rfc3986)中,加号是保留字符,并不意味着要翻译为空格。

于 2015-11-11T15:51:39.263 回答