Yii2 RateLimiter标头X-Rate-Limit-Reset的值不正确

时间:2017-12-29 10:37:39

标签: yii2 yii-rest

我一直在努力理解Yii2在X Rate-Limit-Reset标头中的价值背后的逻辑,该标头是在this line中计算的。

documentation州:

  

X-Rate-Limit-Reset,等待获取最大允许请求数的秒数

因此,如果速率限制为100且时间段/窗口为3600秒,那么我理解它应该像这样工作:

  • 请求#1在10:00返回标题X-Rate-Limit-Reset 3599
  • 请求#2在10:30返回标题X-Rate-Limit-Reset 1800
  • 请求#3在10:59返回标题X-Rate-Limit-Reset 59

我误解了什么吗?或者这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

实际上它应该像

  • 请求#1在10:00返回标题X-Rate-Limit-Reset 36
  • 请求#2在10:30返回标题X-Rate-Limit-Reset 36
  • 请求#3在10:59返回标题X-Rate-Limit-Reset 36

这是因为速率限制100 / 3600和稳定的请求数量速率,填充给定窗口(3600)需要100 36秒的间隙,所以在第一次请求36秒后,您再次获得100个可以使用的请求。

不幸的是,Yii 2中有bug这个功能(每次都返回0)但是由于你的问题,我能够找到它并提出一个应该在2.0中发布的fix 0.14。