【问题标题】:How do I restrict the user from accessing the static html files in a ExpressJS/NodeJS?如何限制用户访问 ExpressJS/NodeJS 中的静态 html 文件?
【发布时间】:2015-04-06 10:14:04
【问题描述】:

有没有办法检测用户的请求 URL 并重新路由到特定的错误页面,例如, 我想要任何 HTML 文件 (*.html) 的所有路由,检测它并希望它被重新路由到错误页面。也将其隐藏,用户无法查看。

P.S:使用 Express 4 和最新的 Node.JS 版本。

app.get('/', function(req,res){
    if(req.is('text/html') == true){
        res.redirect('/login');
    }

这似乎不起作用,我想我错过了获取请求中的参数。

请指导。提前致谢。

【问题讨论】:

  • 只需将您的 sn-p 放在您的 app.use(express.static(...)); 之前就可以了。
  • 如果您不希望人们访问这些文件,为什么首先要在静态路由下托管这些文件?
  • @Quentin 那我应该把它们放在哪里?
  • @Chinya_DotA — 你可以删除它们。 (当您不知道文件的用途时,很难就将文件放在哪里给出有用的建议,您只是告诉我们它们不是的用途)。
  • 那么 HTML 文件实际上是模板文件吗?创建一个模板目录并将它们保存在那里。

标签: javascript html node.js express url-routing


【解决方案1】:

假设您的 url 中有文本 html,并且在这种情况下,您希望将其路由到 login。请尝试以下操作:

app.use(function (req, res, next) {
    if ((req.path.indexOf('html') >= 0)) {
        res.redirect('/login');
    } 
});

它会检查您的 url 路径,如果检测到 html,它将重定向到 login

【讨论】:

  • 或者在路由中使用正则表达式:app.use(/html$/, function...)
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多