说实话,我真的不知道nodejs,express和swig是如何工作的。 我有这个代码似乎提供了我所有的HTML页面
app.engine('html', swig.renderFile);
app.set('view engine', 'html');
app.set('views', __dirname+'/html');
我希望能够在返回html文件之前检查请求。具体来说,我想检查用户是否使用旧版本的IE并将其重定向到另一个页面。
现在,我可以检查请求并重定向特定页面,如此
app.get('/veryspecificpage.html', function(req, res) {
if( isBadBrowser(req) ) {
res.writeHead(302, {
'Location': 'browserError.html'
});
res.end();
} else {
res.render('veryspecificpage', {});
});
})
但我不想为每个.html页面指定这个。如何截取请求并为所有html页面执行此操作?
答案 0 :(得分:1)
记录每个请求
示例节点Web服务器。只需将每个请求记录到服务器,就像这样...
var http = require('http');
http.createServer(function (req, res) {
console.log(req); // <--- LOGS EACH REQUEST
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
答案 1 :(得分:1)
您应该使用中间件来检查每个请求。
// gets executed for every request to the app
app.use(function (req, res, next) {
// check for browser here and redirect if necessary, if not, next() will continue to other middleware/route.
next();
});
确保在任何路线前放置它。您可以转到this页面了解有关它的更多信息。