Javascript 如何设置X-rate limit-Reset与快速费率限制?

Javascript 如何设置X-rate limit-Reset与快速费率限制?,javascript,express,handler,rate-limiting,ratelimit,Javascript,Express,Handler,Rate Limiting,Ratelimit,我想设置一个自定义时间,如果用户达到速率限制,则必须等待该时间。我正在使用,我想我可以通过在。我可以设置此值,但它似乎没有任何效果 作为一个极端的例子,我试图在未来很长一段时间内使用以下处理程序阻止它们: res.setHeader('X-RateLimit-Reset', Date.now() + 100000000000) 此操作后的控制台日志记录结果正确: 'x-ratelimit-reset': [ 'X-RateLimit-Reset', 1566112162159 ] // &l

我想设置一个自定义时间,如果用户达到速率限制,则必须等待该时间。我正在使用,我想我可以通过在。我可以设置此值,但它似乎没有任何效果

作为一个极端的例子,我试图在未来很长一段时间内使用以下处理程序阻止它们:

res.setHeader('X-RateLimit-Reset', Date.now() + 100000000000)
此操作后的控制台日志记录结果正确:

 'x-ratelimit-reset': [ 'X-RateLimit-Reset', 1566112162159 ] // <-- far in the future

但是,执行此操作后,用户仍然能够调用本应限制速率的函数。如何为用户设置自定义重置时间?

首先,您没有提到,我假设您使用的是express rate限制附带的默认MemoryStore。因此,要回答您的问题,您不必在响应中手动设置x-ratelimit-reset标头,程序包会为您执行此操作

因此,如果使用默认MemoryStore,配置如下所示, 而且,如果您使用的存储不是默认存储,您可以在其中添加存储配置, 这里需要注意的是,rate limt redis store在x-rate Limit-reset标头方面存在一些问题,无法按预期工作。因此,您可以继续使用其他选项

app.use(
    RateLimit({
        windowMs: 10 * 60 * 1000 , // 10 minutes
        max: 100, // limit each IP to 100 requests per windowMs
        message: 'You have exceeded the 100 requests in 10 minutes limit!',
    })
);
app.use(
    RateLimit({
        store: new MongoStore({
            uri: 'mongodb://localhost:27017/your-db-name',
            expireTimeMs: 10 * 60 * 1000 // 10 minutes
        }),
        windowMs: 10 * 60 * 1000 , // 10 minutes
        max: 100, // limit each IP to 100 requests per windowMs
        message: 'You have exceeded the 100 requests in 10 minutes limit!',
    })
);