阻止公众访问expressjs应用程序
Block public access to expressjs app
考虑以下expressjs应用程序:
var express = require('express');
var http = require('http');
var httpApp = express();
httpApp.configure(function() {
httpApp.use(express.static(__dirname + '/static/'));
});
var server = http.createServer(httpApp).listen(4444);
现在,我希望这个服务器不能公开使用&仅根据特定客户端的IP地址/域对其请求作出响应。其他人都应该得到403 - Forbidden
错误。
我搜索了API文档&找到了首先通过CCD_ 2&则检查CCD_ 3。
但是,我无法访问req
对象。所以如果有人接受这个代码&可以向我展示如何根据其IP/域拒绝req,这将非常有帮助
只需添加一个中间件即可检查IP,如果不匹配则拒绝访问:
app.use(function(req, res, next) {
if (allowed(req.ip))
next();
else
res.status(403).end('forbidden');
});
使用express ipfilter
安装
npm install express-ipfilter
使用Express
var express = require('express')
, ipfilter = require('express-ipfilter')
, app = express.createServer()
;
// Whitelist the following IPs
var ips = ['127.0.0.1'];
// Create the server
app.use(ipfilter(ips, {mode: 'allow'}));
app.listen(3000);
https://www.npmjs.com/package/express-ipfilter#installation
在我的情况下,我不得不稍微调整@Jilo Paulose的解决方案:
const express = require('express');
const ipfilter = require('express-ipfilter');
express()
.use(ipfilter.IpFilter(['127.0.0.1','::1'], {'mode': 'allow'}))
.use(express.static('static'))
.listen(3000);
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 科尔多瓦页面类应用程序中的多个谷歌地图
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 在phonegap应用程序内部重定向不起作用
- 尝试在expressJS应用程序中使用haml咖啡时出现奇怪错误
- Expressjs托管具有视图的angular应用程序-can't重新加载
- Node,ExpressJS,vhost-运行多个应用程序
- ExpressJS和Angular-'留下'应用程序进行服务器端身份验证
- 阻止公众访问expressjs应用程序
- 在ExpressJS中运行多个应用程序