gpt4 book ai didi

node.js - 如何在node.js中使用 'limiter'

转载 作者:行者123 更新时间:2023-12-02 10:16:24 29 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现一些反垃圾邮件机制。我遇到了the limiter package .

读完他们的例子后我很困惑:

var RateLimiter = require('limiter').RateLimiter;
var limiter = new RateLimiter(150, 'hour', true); // fire CB immediately

// Immediately send 429 header to client when rate limiting is in effect
limiter.removeTokens(1, function(err, remainingRequests) {
if (remainingRequests < 1) {
response.writeHead(429, {'Content-Type': 'text/plain;charset=UTF-8'});
response.end('429 Too Many Requests - your IP is being rate limited');
} else {
callMyMessageSendingFunction(...);
}
});

“响应”在哪里定义?我们不需要使用 app.use() 将限制器挂接到路径吗?否则限制器如何知道传入的 IP?

最佳答案

几天前我尝试过这个软件包。该包用于记录一段时间内的请求计数。请求来自哪里并不重要。所以这个包并不关心传入的IP地址是什么。

确实,我们需要在application中间件中添加代码来限制整个应用程序或指定路由的route中间件。然后就可以获得response对象。下面是一个简单的用法。

var express = require('express')
var app = express()

app.use(function (req, response, next) {
limiter.removeTokens(1, function(err, remainingRequests) {
if (remainingRequests < 1) {
response.writeHead(429, {'Content-Type': 'text/plain;charset=UTF-8'});
response.end('429 Too Many Requests - your IP is being rate limited');
} else {
next();
}
});
})

如果您想跟踪指定的IP地址。我推荐express-rate-limitexpress-limiter .

关于node.js - 如何在node.js中使用 'limiter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460521/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com