在expressJS中阻止静态文件访问

时间:2015-07-10 22:40:31

标签: javascript node.js express

我正在尝试阻止我网站中的某些文件被公开访问。例如,如果你去mysite.com/package.json而不是在浏览器中显示它我只想发送和错误或重定向回我的主页或其他东西。我觉得这应该很容易......但我还没有能够得到任何工作。该网站没有任何复杂的内容,它运行的是一个相当简单的server.js

var appRoot        = __dirname,
    express        = require('express'),
    chalk          = require('chalk'),
    mongoose       = require('mongoose'),
    bodyParser     = require('body-parser'),
    methodOverride = require('method-override'),
    path           = require('path'),
    errorhandler   = require('errorhandler'),
    os             = require('os'),
    http           = require('http'),
    Routes;


// -----------------------------
// Configuration
// -----------------------------
var port, env, logs;

// Switch some vars based on the ENV
if(process.env.NODE_ENV === 'production'){
  port = 3000;
  env = 'production';
} else {
  port = 8080;
  env = 'development';
}

// Express Variables
var app     = express();
var router  = express.Router();

// Use static files in root
app.use(express.static(__dirname));

// API config
app.use(bodyParser.json());
app.use(methodOverride());
app.use(errorhandler({ dumpExceptions: true, showStack: true }));

// Database
mongoose.connect(mydb);

// Routes / API Config
Routes = require(appRoot + '/routes')(app, router, mongoose);

// After all routes don't match ie. refreshing a page, send index.html
app.get('/*', function(req, res) {
  res.sendFile(__dirname + '/index-' + env + '.html');
});

app.listen(port);

我希望做类似的事情:

app.get('/package.json', function(){
 res.end('Not allowed');
});

甚至在我发送静态html索引之前检查他们是否正在尝试访问受限文件。欢迎任何建议,资源等。如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:2)

根据您的comment

你应该替换这一行:

app.use(express.static(__dirname ));

用这个:

app.use('/assets', express.static(__dirname + '/assets'));
app.use('/views', express.static(__dirname + '/views'));