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

标签 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 中更改这种操作模式?这是一个错误吗?

最佳答案

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

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

关于node.js - Express URL 参数功能不会将加号 (+) 解码为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111288/

相关文章:

node.js - Express-session 在每次请求时创建新 session

node.js - 在 LoopbackJS : How to get server protocol (http or https) in a boot script or server side code? 中

javascript - 重新加载 Express 应用程序不起作用(Angular 前端)

Javascript decodeURI(Component) 格式错误的 uri 异常

javascript - Bluebird - Promise 跟踪进度

javascript - 在 Telegram 机器人返回错误中创建 INVOICE

database - 在没有依赖关系的纯 node.js 中推荐数据库?

node.js - 在 Azure 上运行的 express.js 中的 multipart/form-data 出现错误

javascript - 有人可以告诉我为什么我们需要decodeURIComponent