当前位置:  开发笔记 > 编程语言 > 正文

ExpressJS限制对公共文件的访问

如何解决《ExpressJS限制对公共文件的访问》经验,为你挑选了1个好方法。

有没有办法隐藏节点服务器提供的文件?我试图重新路由某些文件和目录,但Express 4.X中没有任何工作.我还尝试在请求某些文件时发送4XX HTTP响应,但这仅适用于目录路径.无论我做什么,如果存在由Node提供的文件,那么用户将能够看到源代码.这就是Express的工作原理吗?它是否意味着成为生产框架的开发框架?

现在我正在尝试发送错误的回复.

完整的server.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预处理器很容易解开它.



1> Jason Sebrin..:
一线罪魁祸首
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.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有