我正在使用nginx服务器,正在创建一个android应用,它在服务器上使用json文件以实现特定功能,现在,如果我从其URL访问此json文件,则会在浏览器中打开它,我希望它只能从我的应用程序访问,因为它包含一些重要信息,我知道jwt令牌,我想到了将它与node js一起使用以获取文件的内容,但仍然可以通过其URL访问文件,无论如何可以预防吗?
我想要的另一个技巧是,从节点js访问json文件是好事,还是考虑到服务器负载,直接访问json文件更有效
任何帮助将不胜感激,在此先感谢
答案 0 :(得分:0)
您应该将json文件移到nginx根目录之外,这样没人可以单独通过url访问它。
例如,如果这是您计算机的目录。
my-project/
src/
index.js
public/ # nginx root dir
file.json # move this outside of public/
private/
file.json # you can move it here
在那之后,您可以使用JWT保护将用于json文件的路由。这是express docs的示例。 https://expressjs.com/en/api.html#res.sendFile
app.use(jwtMiddleware) // google for "express jwt middleware"
app.get('/file/:name', function (req, res, next) {
var options = {
root: __dirname + '/path/to/jsonfile',
dotfiles: 'deny',
headers: {
'x-timestamp': Date.now(),
'x-sent': true
}
};
var fileName = req.params.name;
res.sendFile(fileName, options, function (err) {
if (err) {
next(err);
} else {
console.log('Sent:', fileName);
}
});
});
我想要的另一个技巧是,从节点js访问json文件是好事,还是考虑到服务器负载,直接访问json文件更有效
如果您的JSON文件是公开的,那么让nginx提供它是有意义的。但是,您的json文件需要身份验证,并且该逻辑在node中而不是nginx易于实现。