繁体   English   中英

为什么 express-rate-limit 没有按预期工作?

[英]Why is express-rate-limit not working as expected?

问题是在我指定的时间内没有强制执行速率限制。 它没有持续 35 分钟,而是只持续了大约 20 秒。 另外,如果我一直提出请求,限制总是被强制执行,所以这似乎刷新了时间限制,我认为这也是意想不到的。

除了这些问题之外,它按预期工作,限制了我在“最大”中指定的请求数量,只要我足够快地发出请求即可。 我已经在本地和 Heroku 服务器上进行了测试。

这是相关代码:

应用程序.js

var express = require('express');
var dbRouter = require('./routes/db');

var limiter = require('express-rate-limit');
var app = express();

app.set('trust proxy', 1);

// This is a global limiter, not the one I'm having issues with. 
// I've tried removing it, but the issue remained.
app.use(limiter({
  windowMs: 10000,
  max: 9
}));

app.use('/db', dbRouter);

module.exports = app;

数据库.js

var express = require('express');
var router = express.Router();

var level_controller = require('../controllers/levelController');

var limiter = require('express-rate-limit');

var level_upload_limiter = limiter({
    windowMS: 35 * 60 * 1000,
    max: 1,
    message: 'Too many level uploads. Please try again in about 30 minutes.'
});

router.post('/level/create', level_upload_limiter, level_controller.level_create_post);

module.exports = router;

levelController.js

exports.level_create_post = [
    (req, res, next) => {
        
        // ...
        
    }
];

这是您在设置中输入的错误: windowMS -> windowMs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM