问题是在我指定的时间内没有强制执行速率限制。它不会持续 35 分钟,而是仅持续约 20 秒。另外,如果我继续提出请求,则始终会强制执行限制,因此似乎刷新了时间限制,我认为这也是出乎意料的。
除了这些问题,它可以按预期工作,限制我在“max”中指定的请求数量,只要我足够快地完成它们。我已经在本地和 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句