Nodejs Expressjs URI字符

时间:2012-05-25 17:42:16

标签: javascript node.js uri express middleware

有没有办法在Expressjs中限制允许的uri字符。比如设置一个字符变量:

allowed_uri_chars = 'a-zA-Z0-9'; etc

2 个答案:

答案 0 :(得分:3)

最合乎逻辑且最简单的方法是在某些中间件中使用正则表达式:

var url = require("url");

app.use(function(req, res, next) {
  var pathname = url.parse(req.url).pathname;
  if(!pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
  next();
});

或者,由于URL已经被Express解析,但是没有公开显示,您可能希望保存一个调用来解析并依赖Express内部(我不建议):

app.use(function(req, res, next) {
  if(!req._parsedUrl.pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
  next();
});

这可确保您的路径名(http://example.com/foo/bar?id=1334,路径名为/foo/bar)仅包含字母,数字和斜杠。如果没有,它会提高403.

答案 1 :(得分:1)

你不能使用正则表达式来解析授权的字符吗?

或者你的意思是直接路由?