Node.js 截取express.js中的静态文件请求
我有一个节点服务器,为公用文件夹中的静态文件提供服务,如下所示:Node.js 截取express.js中的静态文件请求,node.js,express,Node.js,Express,我有一个节点服务器,为公用文件夹中的静态文件提供服务,如下所示: var app = express(); app.listen(port); app.use(compression()); app.use(express.static(__dirname + '/PUBLIC')); 有一个json文件,比如说important.json,位于/PUBLIC文件夹中。这是一个静态文件 现在,我想截取这个/PUBLIC/important.json的请求,这样我就可以通过编程返回一个随机的js
var app = express();
app.listen(port);
app.use(compression());
app.use(express.static(__dirname + '/PUBLIC'));
有一个json文件,比如说important.json,位于/PUBLIC文件夹中。这是一个静态文件
现在,我想截取这个/PUBLIC/important.json的请求,这样我就可以通过编程返回一个随机的json结构
以下情况均不适用:
app.get('/PUBLIC/important.json', function(req, res) {
console.log("caught1!")
});
app.get(__dirname + '/PUBLIC/important.json', function(req, res) {
console.log("caught2!")
});
app.get('important.json', function(req, res) {
console.log("caught3!")
});
我怎样才能截获对那个特定静态文件的请求呢?您能告诉我们更多关于您的堆栈的信息吗 您是否使用nginx/apache代理将流量传递到nodejs服务器 你只是在用“node app.js”运行你的应用程序吗 让我们尝试在应用程序中添加以下简单路由:
app.get('/', function (req, res) {
res.send('Hello World!');
});
并尝试通过删除URI参数来访问它?“你好世界”出现了吗
我只是想确定流量是由你的节点应用程序处理的
您的路由定义应该适用于您的实际请求。如
所述。静态中间件不使用next()
调用下一个中间件,定义顺序很重要。在使用express.static
之前,必须定义自己的中间件
app.get('/PUBLIC/important.json', (req, res, next) => {
console.log('caught');
next();
});
app.use(express.static(__dirname + '/PUBLIC'));
不。hello world将不会显示,公用文件夹中的索引页将像往常一样显示。important.json是您想对公众隐藏的内容吗?因为如果是的话,你不能把它放在公共文件夹里。无论您如何努力,总会有一种方法绕过您的中间件,最终将提供文件。(我首先想到的是unicode字符串,它规范化为“important.json”)不,它不是一个秘密文件。它过去是一个静态json,几乎不会改变,但由于需求的变化,我们希望json数据部分是动态的,所以我尝试截取它,并以编程方式处理该请求