我正在使用Hapi / React构建一个应用程序,它正在Nodewebkit中提供。
应用程序安装在用户PC上并在本地运行。我遇到的问题是: - 用户运行应用程序。在同一网络上的其他一些PC可以访问应用程序并使用它。例如,如果我在我的PC上运行我的应用程序,我的IP是192.168.0.5。其他人可以在浏览器中输入该IP,并且可以使用我的应用程序。
以前我使用Express而不是Hapi,并且有一个设置可以阻止它,只限制连接器只有本地主机。
如何在Hapi.js中实现相同的目标?
这是我的Nodewebkit启动文件:
process.env.NODE_ENV = "desktop";
var Hapi = require('hapi');
var config = require('./config');
var models = require('./models');
log4js = require('log4js');
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/project.log', category: 'projects' }
]
});
logger = log4js.getLogger('projects');
logger.setLevel('ERROR');
logger.setLevel('INFO');
var plugins = [
require('inert'),
require('blipp')
];
const server = new Hapi.Server();
var path = require('path');
global.appRoot = path.resolve(__dirname);
server.connection({port: config.server.port});
server.register(plugins, function() {
server.route({
method: 'GET',
path: '/{path*}',
config: {
auth: false,
handler: {
directory: {
path: './public',
listing: false,
index: true
}
}
}
});
});
server.route(require('./server/config/routes'));
models.sequelize.sync().then(function () {
server.start(function () {
});
});
答案 0 :(得分:3)
By default, hapi connections listen on the 0.0.0.0 interface(所有网络接口,包括您的LAN)。您希望您的服务仅在您的计算机上可用,因此您应该只监听环回接口:
server.connection({ port: config.server.port, address: '127.0.0.1' });
或
server.connection({ port: config.server.port, address: 'localhost' });
查看server.connection([options])
文档下的更多信息。