node.js - Node ,express,处理url中的 ".."符号

标签 node.js express

我希望在对 url 执行任何路由之前获取 Node (使用 Express 进行路由)来解析 url 中出现的所有 ../ 符号。

例如,如果在 url /a/b/../c/d/e/../../f 处查询 apache,它将首先解析所有 ../ 符号,最终将提供位于 /a/c/f 的任何内容。

但是,使用node+express,/a/b/../c/d/e/../../f按字面意思理解,并且不会匹配的路由/a/c/f。我的问题是以下代码不会响应像 /a/b/../c/d/e/../../f 这样的请求:

app.get('/a/c/f', function(req, res) {
   return res.status(200).json({ msg: 'it worked!' }); 
});

如何让node+express解析url中的../符号?

最佳答案

您可以使用路径模块来连接 URL 段:

const path = require("path");

app.use(function(req, res, next) {
    const pathArr = req.url.split("/");
    req.url = path.join.apply(null, pathArr);
    next();
});

将其重新分配给网址将允许任何后续的快速匹配器继续处理它,而无需手动控制提供任何内容。

关于node.js - Node ,express,处理url中的 ".."符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43616158/

相关文章:

node.js - this 的 Node 异步库绑定(bind)

android - 如何在 cordova 中禁用 gradle?

javascript - Node.js 在控制台中打印回未定义的属性

node.js - 如何同步向mongo插入数据(Nodejs、Express)

javascript - 在被测试的方法中模拟一个函数

javascript - Next.js 应用程序在带有 basePath 的子文件夹中,如何使主页在 basePath 之外可用?

node.js - 如何保护我的 REST-API?

Node.js 和 Express - 关于通过一次调用渲染目录中的页面

node.js - NPM 如何更新/升级传递依赖?

javascript - 从十六进制创建以 0 开头的十进制颜色?