有没有办法隐藏Node服务器提供的文件?我试图重新路由某些文件和目录,但Express 4.X中没有任何工作。我还尝试在请求某些文件时发送4XX HTTP响应,但这仅适用于目录路径。无论我做什么,如果存在由Node提供的文件,那么用户将能够看到源代码。这就是Express的工作原理吗?它是否意味着成为生产框架的开发框架?
现在我正在尝试发送错误的回复。
完整服务器.js
var path = require('path'),
express = require('express'),
var app = express();
app.use('/', express.static(__dirname));
app.use('/', express.static('dist'));
// not working
app.get('/client/config/app.js', function(req, res) {
res.sendStatus(400);
});
app.listen(3001, function() {
console.log('listening');
});
如果我指定目录路径,我可以发送响应,但如果指定完整文件路径则不能。这有效:
app.get('/client/config/', function(req, res) {
res.sendStatus(400);
});
这不是:
app.get('/client/config/app.js', function(req, res) {
res.sendStatus(400);
});
我还尝试使用app.use
进行路由。那也行不通。
我现在能够“隐藏”源代码的最好的事情就是用Gulp来解决它,但我想用JS预处理器很容易解开它。
答案 0 :(得分:6)
app.use('/', express.static(__dirname));
这条线说它可以拉任何东西。您可以将其替换为:
app.use('/', express.static(__dirname + '/public'));
然后将内容放入您想要查看的公共目录中。对于您希望优先考虑的路线,请将它们放在其他声明之前。所以你会放置:
app.get('/client/config/app.js', function(req, res) {
res.sendStatus(400);
});
最重要的是。但是,如果您只是解决了第一个问题,那么您可能不需要它,那么您就是好的。另请参阅HTTP状态代码。对于那种类型的文件,您可能需要404或403.