【发布时间】:2020-05-19 07:02:28
【问题描述】:
express.js 允许我“销毁”响应:
blacklist = ['1.1.1.1']
app.use((req, res, next) => {
if (blacklist.includes(req.ip))
res.destroy(null);
else
next();
})
这会在谷歌浏览器上抛出ERR_EMPTY_RESPONSE。
我可以简单地结束它:
blacklist = ['1.1.1.1']
app.use((req, res, next) => {
if (blacklist.includes(req.ip))
res.end();
else
next();
})
这会返回带有空白页面的 200 OK。
不发送响应会挂起页面而不会超时:
blacklist = ['1.1.1.1']
app.use((req, res, next) => {
if (!blacklist.includes(req.ip))
next();
})
我知道 express 的超时模块,但我无法通过简单的timeout(0) 使其引发客户端超时错误。
我真正想要的是通过抛出ERR_CONNECTION_TIMED_OUT 来“让它看起来像”服务器“崩溃”为黑名单 IP。我知道端口 80 仍将打开(并且可以看到),但这不是我的目标。是否可以停止侦听某些 IP 并因此引发 ERR_CONNECTION_TIMED_OUT 错误?
【问题讨论】: